簡體   English   中英

linq to sql復雜查詢,分組依據

[英]linq to sql complex query with group by

我有一個名為“文章”的表格。

它包括以下字段:

ArticleIndex,ArticleLevel,ArticleParentIndex。

我進行了查詢,該查詢返回了ArticleLevel = 1的所有文章-我們將其稱為query1。 該查詢返回所有ArticleLevel = 2的文章-query2。

我想查詢一個查詢,該查詢將返回帶有至少一個子商品(子商品的級別為2)的level = 1的商品,以及子商品的數量。

到目前為止,我有以下查詢:

var filteredItemsGrouped = from i in filteredItems
                           group i by i.ArticleParentIndex into g
                           select new { Node = g, NodeItemsCount = g.Count() };

然后,為了獲得級別= 1的實際文章,我這樣做:

IList<ArticleNodeInfo> Nodes = new List<ArticleNodeInfo>();
        foreach (var node in filteredItemsGrouped)
        {
            Nodes.Add(new ArticleNodeInfo
            {
                Node = articlesService.GetArticleByIndex((int)(node.Node.FirstOrDefault().ArticleParentIndex)),
                NodeItemsCount = node.NodeItemsCount
            });
        }

這個過程太昂貴了。 是否可以通過一個查詢達到相同的效果(而不是每次都按文章索引檢索)?

希望我足夠清楚...

這應該可以解決問題:

    var articlesLevel1 = (
            from al1 in Articles
            join al2 in Articles on new
            {
                    al1.ArticleIndex,
                    ArticleLevel = 2
            } equals new
            {
                    ArticleIndex = al2.ArticleParentIndex,
                    al2.ArticleLevel
            } into g_al2
            where (al1.ArticleLevel == 1) && g_al2.Any()
            select new
            {
                    ArticlesLevel1 = al1,
                    ArticlesLevel2Count = g_al2.Count()
            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM