【发布时间】:2016-05-31 11:52:33
【问题描述】:
我正在使用 System.Linq.Dynamic 并具有以下简化结构(模型):
Parent -> Children(Child 类型的集合)
孩子拥有财产SortingOrder
我想检索父母列表,包括孩子和按排序顺序排序。
我可以用 LINQ / C# 代码做到这一点
Parents.OrderBy(x=>x.Children.OrderBy(z=>z.SortingOrder).Select(z=>z.SortingOrder).FirstOrDefault())
它适用于 EF (6.0) 但问题在于所有使用字符串的动态示例我找不到从字符串创建相同表达式的解决方案。所以最终应该是这样排序的
Parents.Include("Children").OrderBy("Children.SortingOrder")
显然,作为集合的 Children 没有 SortingOrder,因此所有示例都失败了。
请指教,几个小时都找不到解决方案。我认为解决方案是动态创建 lambda 表达式 (x=>x.Children.OrderBy(z=>z.SortingOrder).Select(z=>z.SortingOrder).FirstOrDefault()) 但不确定如何执行此操作,或者非常感谢任何其他帮助。
我确信它是可行的,因为它作为编译后的强类型表达式工作。
研究的代码示例:
【问题讨论】:
标签: entity-framework linq sorting dynamic sql-order-by