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

Using Linq to group objects that contain a list field

我有一个 class,我们将其命名为 MyClass,其中有一个类型为 IList<AnotherType>:

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

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

list = new List<MyClass>();

我想从这个"list"中得到一个组,具体来说 IOrderedEnumerable<IGrouping<MyClass,AnotherType>> 使用 Linq,它将用作 CollectionViewSource 的源,并将作为分组的 ListView 显示给用户。我该怎么做?

换句话说,我想将 "list" 合并到一个分组的枚举中,其中键是 MyClass 个实例,值是 MyClass.MyListProperty.

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

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

这个returnsIEnumerable<IGrouping<MyClass, AnotherType>>。要使其成为 IOrderedEnumerable,您需要在末尾添加 .OrderBy(x => x.SomeOrderingProperty);