使用Linq对包含列表字段的对象进行分组

时间:2016-08-29 06:46:24

标签: c# linq collectionviewsource

我有一个类,我们将其命名为MyClass,其公共字段为IList<AnotherType>

class MyClass
{
    public IList<AnotherType> MyListProperty {get;}
}

我的应用程序中还有一个MyClass对象列表:

list = new List<MyClass>();

我希望从这个“列表”中获得一个组,特别是 IOrderedEnumerable<IGrouping<MyClass,AnotherType>>使用Linq,它将用作CollectionViewSource的源,并将作为分组ListView显示给用户。我怎么能这样做?

换句话说,我想将“列表”合并为一个可分组的枚举,其中键为MyClass个实例,值为MyClass.MyListProperty

1 个答案:

答案 0 :(得分:0)

如果我没有正确理解你,你正在寻找这样的东西:

list.SelectMany(x => x.MyListProperty.GroupBy(y => x));

返回IEnumerable<IGrouping<MyClass, AnotherType>>。要使其为IOrderedEnumerable,您需要在最后添加.OrderBy(x => x.SomeOrderingProperty);