最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SqlServer使用公用表表達式(CTE)實現(xiàn)無限級樹形構建

 更新時間:2017年08月28日 08:39:17   作者:BruceAndLee  
本文給大家分享的是sqlserver中使用公用表表達式(CTE)實現(xiàn)無限級樹形構建的詳細代碼,非常的簡單實用,有需要的小伙伴可以參考下

SQL Server 2005開始,我們可以直接通過CTE來支持遞歸查詢,CTE即公用表表達式

公用表表達式(CTE),是一個在查詢中定義的臨時命名結果集將在from子句中使用它。每個CTE僅被定義一次(但在其作用域內可以被引用任意次),并且在該查詢生存期間將一直生存??梢允褂肅TE來執(zhí)行遞歸操作。

DECLARE @Level INT=3

;WITH cte_parent(CategoryID,CategoryName,ParentCategoryID,Level)
AS
(
  SELECT category_id,category_name,parent_category_id,1 AS Level
  FROM TianShenLogistic.dbo.ProductCategory WITH(NOLOCK)
 WHERE category_id IN
 (
 SELECT category_id 
 FROM TianShenLogistic.dbo.ProductCategory 
 WHERE parent_category_id=0
 )
  UNION ALL
  SELECT b.category_id,b.category_name,b.parent_category_id,a.Level+1 AS Level
  FROM TianShenLogistic.dbo.ProductCategory b
  INNER JOIN cte_parent a
  ON a.CategoryID = b.parent_category_id
)

SELECT 
 CategoryID AS value,
 CategoryName as label,
 ParentCategoryID As parentId,
 Level
FROM cte_parent WHERE Level <=@Level;
public static List<LogisticsCategoryTreeEntity> GetLogisticsCategoryByParent(int? level)
    {
      if (level < 1) return null;

      var dataResult = CategoryDA.GetLogisticsCategoryByParent(level);
      var firstlevel = dataResult.Where(d => d.level == 1).ToList();
      BuildCategory(dataResult, firstlevel);
      return firstlevel;
    }

    private static void BuildCategory(List<LogisticsCategoryTreeEntity> allCategoryList, List<LogisticsCategoryTreeEntity> categoryList)
    {
      foreach (var category in categoryList)
      {
        var subCategoryList = allCategoryList.Where(c => c.parentId == category.value).ToList();
        if (subCategoryList.Count > 0)
        {
          if (category.children == null) category.children = new List<LogisticsCategoryTreeEntity>();
          category.children.AddRange(subCategoryList);
          BuildCategory(allCategoryList, category.children);
        }
      }
    }

相關文章

最新評論

沙田区| 荥经县| 郁南县| 禄丰县| 雅安市| 喀什市| 洛浦县| 蓬安县| 周口市| 苏尼特左旗| 北川| 西和县| 专栏| 武山县| 韩城市| 安福县| 黔西| 从化市| 瓦房店市| 乐亭县| 广元市| 西乌珠穆沁旗| 芒康县| 江油市| 丰台区| 合水县| 榆中县| 江西省| 八宿县| 新河县| 乐平市| 龙山县| 南京市| 仁化县| 清水县| 宝清县| 新乡县| 日喀则市| 沂南县| 丹巴县| 玛沁县|