【问题标题】:Using Linq to group objects that contain a list field使用 Linq 对包含列表字段的对象进行分组
【发布时间】:2016-08-29 06:46:24
【问题描述】:

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

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

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

list = new List<MyClass>();

我想从这个“列表”中获取一个组,特别是 IOrderedEnumerable&lt;IGrouping&lt;MyClass,AnotherType&gt;&gt; 使用 Linq,它将用作 CollectionViewSource 的源,并将作为分组的 ListView 显示给用户。我该怎么做?

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

【问题讨论】:

  • 尝试用一个例子编辑,现在有点混乱。

标签: c# linq collectionviewsource


【解决方案1】:

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

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

这将返回 IEnumerable&lt;IGrouping&lt;MyClass, AnotherType&gt;&gt;。要使其成为IOrderedEnumerable,您需要在末尾添加.OrderBy(x =&gt; x.SomeOrderingProperty);

【讨论】:

  • 这正是我想要的,谢谢!抱歉,这很难解释,但你还是设法理解了......
猜你喜欢
  • 2013-09-05
  • 2014-12-07
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多