我試圖使用GroupBy
擴展方法轉換成以下嵌套分組。嵌套組Linq查詢與Groupby擴展方法
var res = from th in teamHistories
group th by th.Date into grp1
from grp2 in
(from th in grp1 group th by th.Event)
group grp2 by grp1.Key;
返回IEnumerable<IGrouping<KeySelector, IGrouping<KeySelector, Object>>
;它產生一個像結構樹 -
FirstGroup -> Key(Date)
Elements - SecondGroup -> Key(Event)
Elements - (TeamHistory) ..
但是,當我試圖用GroupBy擴展方法編寫類似的查詢,它似乎工作不同。根據Groupby方法的簽名,它返回 IEnumerable<IGrouping<TKey, TSource>>
。意思是如果我試圖嵌套它會返回IEnumerable<IEnumerable<IGrouping<KeySelector, Elements>>>
,這當然會產生不希望的結果。
這裏是我的嘗試:
var res1 = teamHistories.GroupBy(x => x.Date, (key, g1) =>
g1.Select(x => new { key, x })
.GroupBy(x => x.x.Event, g => g));
問題 -
正在做這樣的嵌套的這種正確的方法?因爲我得到的結果是不同的。它返回
IEnumerable<IEnumerable<IGrouping<KeySelector, Elements>>>
而不是IEnumerable<KeySelector, IGrouping<KeySelector, IGrouping<KeySelector, Object>>>
。與Linq查詢中的
Group by
子句相比,GroupBy
擴展方法是否存在任何限制?
這是完整的snippet如果有人想重現結果。
它返回'IEnumerable>>>'。返回類型被包含在附加的枚舉中。我不得不使用一個額外的循環來獲得實際結果。你知道它是否可以避免? –
vendettamit
@vendettamit,我已更新我的查詢 – octavioccl
真棒!現在我必須仔細分析它是如何轉換它的。 +1。 – vendettamit