【发布时间】:2017-12-25 04:45:15
【问题描述】:
我正在构建一个 Linq 表达式,我没有能力在这个项目中使用 Dynamic Linq。这是我最初的声明。
var orderListQuery = context.Orders.Where(oExpr)
.Join(context.Members,
o => o.MemberId,
m => m.Id,
(o, m) => new {Order = o, Member = m})
.Where(oM => oM.Member.CustomerId == custId);
下一部分是我想有条件地添加降序表达式:
orderListQuery = descending
? orderListQuery.OrderByDescending(sortProperty)
: orderListQuery.OrderBy(sortProperty);
我已经看到一个帖子的错误是我需要显式列出<TSource, TKey>,但由于连接语法的复杂性,我不知道如何显式列出这些。我试过<Order, string>,还是不行。
任何帮助,谢谢。
【问题讨论】:
-
您需要构造一个指向您的属性的表达式。但如果你只是描述你试图用这段代码完成的事情会更好,因为可能有更简单的方法来做到这一点
-
会员ID与客户ID不同,订单上没有客户ID。但是,成员 ID 和客户 ID 是成员表的一部分。 (遗留代码问题)我正在尝试按客户 ID 获取所有订单,并根据作为视图中操作请求发送的 sortProperty 对它们进行排序。 (例如,按日期、小计等排序)。在这种情况下,sortProperty 始终是一个字符串。
-
所以
sortProperty是一个包含属性名称的string? -
@MichaelSefranek 那你为什么不直接设置外键然后正常抓取数据
-
从链接中获取课程,然后使用
.OrderByMember("Order." + sortProperty)。降序类似。
标签: entity-framework linq linq-to-sql asp.net-mvc-5