我有一些代码可以创建列表列表。列表属于这种类型:
List<List<Device>> GroupedDeviceList = new List<List<Device>>();
但需要以下列类型返回结果:
IEnumerable<IGrouping<object, Device>>
这可以通过强制转换等方式实现,还是应该对我的列表列表使用不同的定义?
答案 0 :(得分:2)
如果我理解你的意图,答案如下:
var result = GroupedDeviceList
.SelectMany(lst => lst.GroupBy(device => (object)lst));
结果属于IEnumerable<IGrouping<object, Device>>
类型,其中object是对List<Device>
的引用。
答案 1 :(得分:1)
IGrouping<T1,T2>
通常是通过LINQ GroupBy
查询创建的。
您如何填充GroupedDeviceList
?您是手动执行此操作还是将其转换为.GroupBy
的结果?
您可以通过执行以下操作再次执行分组:
// IEnumerable<IGrouping<TWhatever, Device>>
var reGroupedList =
GroupedDeviceList
.SelectMany( innerList => innerList.GroupBy( device => device.Whatever ) );
答案 2 :(得分:1)
假设每个非空列表的内容应该组成一个组......
IEnumerable<IGrouping<object, Device>> query =
from list in lists
from device in list
group device by (object)list;