c# - 将 Expression<> 合并到 LINQ 查询中
问题描述
我正在尝试Expression
在 LINQ 查询中加入一个。
Expression<Func<RailcarTrip, DateTime?>>? getDateProperty = Search.GetDateProperty();
if (getDateProperty != null)
{
if (Search.StartDate.HasValue)
query = query.Where(rt => getDateProperty(rt) >= Search.StartDate);
if (Search.EndDate.HasValue)
query = query.Where(rt => getDateProperty(rt) <= Search.EndDate);
}
public Expression<Func<RailcarTrip, DateTime?>>? GetDateProperty()
{
return DateType switch
{
TripDateType.Waybill => rt => rt.WaybillRailcar.Waybill.CreateDate,
TripDateType.Delivery => rt => rt.DeliveryDate,
TripDateType.Release => rt => rt.ReleaseDate,
TripDateType.Return => rt => rt.ReturnDate,
TripDateType.ReturnRelease => rt => rt.ReturnReleaseDate,
_ => null,
};
}
但这不会编译。getDateProperty()
不支持在我的 LINQ 查询中使用。
谁能告诉我如何使这项工作?
我在网上找到了通过Expression<>
直接传递而不是在表达式中使用它来解决此问题的示例。但就我而言,我将结果与其他内容进行比较。
我想我可以将日期传递给GetDateProperty()
并将其合并到那里的表达式中。但是对于每种比较类型,我需要不同版本的方法。
解决方案
推荐阅读
- git - 在团队基础服务器上打开文件时出现“不正确的功能”错误
- python - 使用 Django 和 SMTP 协议发送电子邮件时出现 TimeoutError 错误
- python - 为什么 sqlite 3 停止在我的代码中处理“删除”类调用?
- jenkins - Jenkins 中的 CloudBees Docker Hub/注册表通知插件错误
- windows - 如何防止在 JavaFX TableView 中拖放列时触发事件
- javascript - 点击表格tr后,如何在另一个页面上显示这个数据?
- python - 发布的数据不会出现在 DRF 序列化程序属性上
- linux - linux shell脚本的cURL中将变量连接到URL末尾
- angular - ASP.NET CORE 身份验证 cookie 消失
- spring - Spring MVC:如何避免在控制器和实体处重复验证