2013-05-13 96 views
2

我有一個List<T>其中T是一個自定義對象Cow。現在我使用以下代碼根據Color分割該列表。通過在多個屬性上分組創建對象列表

cowGroups = from x in cows 
      group x by x.Color into y 
      select y.ToList().ToList(); 

然後我拿cowGroups,並在其上運行一個foreach做一組動作,以每Cow。這個清單實際上是作爲IEnumerable<List<Cow>>

我想要做的是做一個雙重分組我的初始List<Cow>,以便我可以根據他們的顏色和大小進行分組。結果應該仍然是IEnumerable<List<Cow>>,但每個List<Cow>將根據顏色和大小的組合對進行製作。

一位同事建議ToLookup方法,但返回鍵/值對的列表,我似乎不能做的對的值部分東西。

我想我正在尋找一種方式直接進入列表集合,或者將ToLookup方法的結果轉換爲列表集合。

回答

5

您可以通過一個包含兩個屬性的一類羣體:

group x by new { x.Color, x.Size } into y 
+0

哦,我...我現在感覺這麼愚蠢。我嘗試過的一件事是'cows.GroupBy(new {x.Color,x.Size}),但它產生了與ToLookup類似的結構。 **編輯**:我應該補充一點,這正是我所需要的。謝謝! – Logarr 2013-05-13 20:09:22

相關問題