我想通过 LINQ 对 C# 中的对象列表进行排序,我想通过具有某个属性的子列表对这个列表进行排序:基于 nhibernate 的类结构,所有属性都是公共虚拟的。
ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
我怎样才能做到这一点。
我想通过 LINQ 对 C# 中的对象列表进行排序,我想通过具有某个属性的子列表对这个列表进行排序:基于 nhibernate 的类结构,所有属性都是公共虚拟的。
ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
我怎样才能做到这一点。
听起来你的结构是这样的:
class ChildObject
{
public int Attribute { get; set; }
}
class ParentObject
{
public IEnumerable<ChildObject> ChildobjectList { get; set; }
}
在这种情况下,不可能简单地按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));