我有一些代碼創建列表的列表。這份名單是這種類型的:將列表的列表投射到IGrouping?
List<List<Device>> GroupedDeviceList = new List<List<Device>>();
但需要在以下類型的返回結果:
IEnumerable<IGrouping<object, Device>>
這是可能通過鑄造等,或我應該用我的名單不同的定義列表?
我有一些代碼創建列表的列表。這份名單是這種類型的:將列表的列表投射到IGrouping?
List<List<Device>> GroupedDeviceList = new List<List<Device>>();
但需要在以下類型的返回結果:
IEnumerable<IGrouping<object, Device>>
這是可能通過鑄造等,或我應該用我的名單不同的定義列表?
如果我理解正確的話你的意圖,答案是如下:
var result = GroupedDeviceList
.SelectMany(lst => lst.GroupBy(device => (object)lst));
結果是IEnumerable<IGrouping<object, Device>>
類型,其中對象是對您的List<Device>
的參考。
IGrouping<T1,T2>
通常是通過LINQ GroupBy
查詢創建的。
你是如何填充GroupedDeviceList
?你是在手動做還是從.GroupBy
的結果轉換它?
你可以進行做類似的事情再次分組:
// IEnumerable<IGrouping<TWhatever, Device>>
var reGroupedList =
GroupedDeviceList
.SelectMany(innerList => innerList.GroupBy(device => device.Whatever));
這將返回一個IEnumerable
@Thomas當然應該使用'SelectMany',答案更新。謝謝。 – 2010-09-02 09:10:46
。假定每一個非空列表的內容應組成一組...
IEnumerable<IGrouping<object, Device>> query =
from list in lists
from device in list
group device by (object)list;
什麼是你的分組的關鍵?設備的屬性? – 2010-09-02 08:49:43