开发者

Casting a list of lists to IGrouping?

开发者 https://www.devze.com 2023-01-14 09:37 出处:网络
I have some code that creates a开发者_如何学C list of lists. The list is of this type: List<List<Device>> GroupedDeviceList = new List<List<Device>>();

I have some code that creates a开发者_如何学C list of lists. The list is of this type:

 List<List<Device>> GroupedDeviceList = new List<List<Device>>();

But need to return the result in the following type:

 IEnumerable<IGrouping<object, Device>>

Is this possible via a cast etc or should I be using a different definition for my list of lists?


If I understood your intentions correctly, the answer is below:

    var result = GroupedDeviceList
        .SelectMany(lst => lst.GroupBy(device => (object)lst));

result is of type IEnumerable<IGrouping<object, Device>>, where object is a reference to your List<Device>.


IGrouping<T1,T2> is usually created via a LINQ GroupBy query.

How are you populating GroupedDeviceList? Are you doing this manually or converting it from the result of a .GroupBy?

You could perform the grouping again by doing something like this:

// IEnumerable<IGrouping<TWhatever, Device>>
var reGroupedList = 
    GroupedDeviceList
    .SelectMany( innerList => innerList.GroupBy( device => device.Whatever ) );


Presuming that the contents of each non-empty list should form a group...

IEnumerable<IGrouping<object, Device>> query =
  from list in lists
  from device in list
  group device by (object)list;
0

精彩评论

暂无评论...
验证码 换一张
取 消