linq - 如何对带有子属性的集合进行排序?

标签 linq linq-to-sql entity-framework-4.1

我应该根据 child 的领域对 parent 进行排序。

示例代码;

IQueryable<Parent> data = context.Parents.Include(o=>o.Children);

// child 有一个成员(字符串)名称。

问题:如何按 child 的名字对 parent 进行排序。

最佳答案

您的问题有些令人困惑,因为首先,它同时被Entity Framework和LINQ-to-SQL标记。您实际使用哪个ORM?

其次,更重要的是,您说要"sort Parent by Children Names"。您想排序哪个 child 的名字?您确实意识到,您无法将名称的列表与另一个名称的列表进行比较,并决定哪个名称应该先于另一个名称?

因此,如果我假设您要按字典顺序排列的第一个子名称进行排序,则解决方法如下(@Paul在此名称上已关闭,但您需要指定要作为排序依据的属性):

context.
Parents.
OrderBy(p => p.
             Children.
             OrderBy(c => c.Name).Select(c => c.Name).FirstOrDefault()
       );

在这种情况下,请考虑以下设置。父PA具有子CBCD,而父PB具有子CCCA。排序的结果是,父PB将在排序列表中排在第一位,因为子CA将被用作PB的“主要”子项,而CB将是PA的“主要”子项。如果这不是您要查找的行为,请提供示例和更清晰的描述。

关于linq - 如何对带有子属性的集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617596/

相关文章:

c# - 在运行时更改 LINQ-to-SQL 连接字符串

c# - 使用 Entity Framework LINQ 有效检查数据库中是否存在记录

c# - 从现有列表构建动态 linq 选择查询

c# - Linq to Dictionary<string, List<string>> 与 Null 值

c# - 无法翻译 LINQ 表达式错误

c# - 如何在 C# 中对具有原始顺序的列表进行排名

c# - 内插字符串上的 Ef Core 与 Linq

c# - 将多个表映射到 Entity Framework 中的单个实体类

c# - Entity Framework 代码优先与 T4 模板

c# - 从模型的 ICollection 中提取一个属性作为 List<String>