c# - 在 LINQ 中通过子属性排序父对象

标签 c# linq

如何在 LINQ 中按子对象排序?

A、B 和 C 类。A 有 B 的集合,B 有 C 的集合。我想通过 C 的序数 (int) 属性对对象 A 进行排序。

var query = from a in db.A
        orderby a.Bs.OrderBy(x=> x.C.Ordinal)   <--- ??
        select a;

我似乎无法弄清楚 orderby 语句。

编辑:

对不起,我原来的说法是错误的:

A 有一个 B 的集合,B 有一个 C 对象。 C 不是集合。

每个 A 都应按 C 的序数属性排序。

另一个编辑/解决方案:

在显示期间,我最终在客户端为 A 中的每个 B 集合执行了 .OrderBy(b=>b.C.Ordinal)。无论如何,结果更好,因为我可以让客户按他们需要的任何东西订购,而不是将其嵌入我的存储库中。

最佳答案

你需要弄清楚你对哪个 C 感兴趣。

从现实的角度考虑这一点 - 如果您尝试按 child 的年龄对 parent 进行排序,您会考虑哪个 child 的年龄?如果您的一位 parent 有 1 岁和 5 岁的 child ,一位 parent 有 2 岁和 4 岁的 child ,哪个应该排在第一位?

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

相关文章:

c# - 使用 Linkedin api 时出现 400 错误请求

c# - 避免 .NET Native 错误

c# - 如何将列表字符串传递给 TempData Asp.Net

c# - 使用 IEqualityComparer 根据 C# 中的两个属性生成不同的列表

c# - IQueryable 与 AlphaNumeric 排序

c# - Linq to Entities 与 Linq to Objects 性能问题

c# - 如何在 FluentValidation 中重用数据

c# - Google Analytics API fromdate,todate。如何从开始跟踪时开始?

c# - linq 异常 : This function can only be invoked from LINQ to Entities

c# - for(或)foreach循环和linq查询在速度的情况下有什么区别