使用 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);
。
我有一个 class,我们将其命名为 MyClass,其中有一个类型为 IList<AnotherType>
:
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);
。