按子列表属性排序父对象列表

Hig*_*une 6 c# linq nhibernate

我想通过LINQ对C#中的对象列表进行排序,我想通过具有特定属性的子列表来排序此列表:基于nhibernate的类结构,所有属性都是公共虚拟的.

ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这个.

p.s*_*w.g 5

听起来你的结构是这样的:

class ChildObject
{
    public int Attribute { get; set; }
}

class ParentObject
{
    public IEnumerable<ChildObject> ChildobjectList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,不可能简单地按属性排序IEnumerable<ParentObject>ChildObject.Attribute因为每个 可能有很多值ParentObject。Linq 如何知道使用哪个值进行排序?您必须使用某种聚合函数。有很多选择,但这里只是其中一些:

  • Max按最大元素排序ChildobjectList
  • Min按最小元素排序ChildobjectList
  • First按第一项排序ChildobjectList
  • Sum按值的总和排序,假设 的类型Attribute可以求和

具体使用哪一种取决于您的具体要求。无论如何,你都会像这样使用它:

var result = 
    ParentobjectsList.OrderBy(x => x.ChildobjectList.Max(c => c.Attribute));
Run Code Online (Sandbox Code Playgroud)