簡體   English   中英

如何用LINQ查詢和子表達式編寫嵌套組?

[英]How to write nested group by LINQ query with sub-expression?

我有一個看起來像這樣的item對象:

item["siteId"] = "{7BAD6B24-3B69-4CB9-AD02-9B0003C1927D}";
item["webId"] = "{F66ED194-A91C-49FA-8672-F87DFEE3EF08}";
item["value"] = "blah";

該實施例代表這樣的值, blah是在卷筒紙{F66ED194-A91C-49FA-8672-F87DFEE3EF08}這是在現場{7BAD6B24-3B69-4CB9-AD02-9B0003C1927D}

此商品與許多其他商品集合在一起。 該集合稱為items

我曾嘗試編寫一個LINQ查詢,該查詢首先按網站ID分組,然后按網絡ID分組,但無法使語法正確。 這是我的嘗試:

var itemGroups = from item in items.Cast<SPListItem>()
     let siteId = (string) item["siteId"]
     group item by siteId
     into siteGroup
     select new
        {
            SiteId = siteId,
            SiteGroups =
                from siteItem in siteGroup
                let webId = (string) siteItem["webId"]
                group siteItem by webId into webGroup
                select new
                    {
                        WebId = webId,
                        WebGroups = from siteItem in webGroup
                    }
                };

let子句似乎不能在匿名類型中工作,我不確定要在最后一個from子句中添加什么。

有人可以幫忙嗎?

您不能使用在group by之前聲明的變量。 在您的情況下,解決方案很簡單。 此外,你不能突然結束你的內部查詢。 我會將查詢結構略有不同。

var itemGroups = from item in items.Cast<SPListItem>()
                    let siteId = (string) item["siteId"]
                    group item by siteId
                    into siteGroup
                    let siteGroups = from siteItem in siteGroup
                                    let webId = (string) siteItem["webId"]
                                    group siteItem by webId
                                    into webGroup
                                    select new
                                                {
                                                    WebId = webGroup.Key,
                                                    WebGroups = (from wg in webGroup select wg).ToList()
                                                }
                    select new
                            {
                                SiteId = siteGroup.Key,
                                SiteGroups = siteGroups.ToList()
                            };

暫無
暫無

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

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