c# - 按子列表属性排序父对象列表

标签 c# linq nhibernate

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

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));

关于c# - 按子列表属性排序父对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17125418/

相关文章:

c# - 如果使用接口(interface),类是否应该始终严格实现接口(interface)

c# - 经过一段空闲时间后,图像未从数据库加载

c# - 使用 LINQ 创建 JSON

c# - 帮助使 Fluent NHibernate 为每个表创建一个 oracle 序列

nhibernate - NHibernate是否可以检测到另一个程序何时将新数据写入共享的SQLite数据库?

c# - 如何在 linq-to-Nhibernate 中使用多个条件连接

c# - 组合框 SelectedIndex MVVM WPF

c# - 当光标悬停在 asp.net 网站中的图像上时如何更改图像

c# - 使用 LINQ 对备用对进行分组

linq - 如何在 Silverlight 中使用 LINQ 创建 ObservableCollection