如何在 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/