c# - 如果日期不是低日期,则仅包含在 where 条件中(01/01/0001)
问题描述
我有一个查询,它有一个 where 条件来检查和查找在某个日期之后添加的地址。日期字段不是必需的,因此我希望仅在不是 1/1/0001 时才考虑条件的日期字段。dtmDate 是正在传递的参数
询问
from b in _context.customer
join d in _context.Address on b.id equals d.Id
join e in _context.units on d.Id equals e.Id
where (req.dtmDate.Year != 1 && d.DateAdded >= req.dtmDate)
select new modelAddress
{
address= d.address
}
但这不起作用。它没有返回任何行
解决方案
我会利用在您编写 LINQ 查询时不执行它们的事实,因此您可以在创建基本查询后有条件地添加子句:
var query = from b in _context.customer
join d in _context.Address on b.id equals d.Id
join e in _context.units on d.Id equals e.Id;
if(req.dtmDate.Year != 1)
query = query.Where(d.DateAdded >= req.dtmDate);
var result = query.Select(
new modelAddress
{
address= d.address
}
);
我更喜欢这个,因为我以前遇到过问题,特别是在 EF LINQ 查询中,当 Where 子句包含在代码中本地评估为 true 的内容时,而不是数据库将评估的内容。在“通配符”数据库查询时,使用“如果 x 为真,则添加-另一个-where-clause”而不是“where(local-value-of-x-equals-local-”的模式似乎效果更好常量或一些-db-data-value-equals-y)"
推荐阅读
- excel - 使用 SUMIF 时遇到问题
- c# - 我的 Discord Bot 不接受用户作为命令的参数
- android - 如何在单击 ListView(由 Firebase 数据元素创建)中检索项目的 Firebase 父 ID?
- spring - 如何使用@RefreshScope 刷新 Spring 集成轮询器?
- python - Python/Pandas:基于 Excel 单元格在附加文件中创建列
- git - 获取 git 存储库中每个文件的提交计数
- ios - 尝试构建多个图像上传到 Firebase:SWIFT 4、FIREBASE 5.0.0 中的 2 个错误
- regex - 如何使用 Regex 删除这些标签之间的换行符?
- java - 未从 HttpClient 获得完整的 HTTP 响应
- html - 从组件外部关注组件内部的输入