C# LINQ如何实现针对多个离散日期的IN clause条件查询
实现方法
你可以通过本地集合+Contains方法实现IN查询效果,LINQ提供器(EF/EF Core等)会自动将该语法翻译为SQL的IN子句,步骤如下:
- 先定义要匹配的离散日期集合
// 按需添加你要匹配的所有日期 var targetDates = new List<DateTime> { new DateTime(2021, 8, 30), new DateTime(2021, 9, 3), new DateTime(2021, 8, 16) };
- 修改原LINQ查询的where条件
results = from a in uow.Query<SomeTable>() where targetDates.Contains(a.SomeDateField) select a;
补充说明
- 如果你习惯用方法语法,也可以写成:
results = uow.Query<SomeTable>() .Where(a => targetDates.Contains(a.SomeDateField));
- 如果
SomeDateField是带时分秒的DateTime类型,仅需要按日期匹配时,可以调整为targetDates.Contains(a.SomeDateField.Date),需要确认你使用的ORM支持该写法的SQL翻译 - 该写法仅适合离散值数量较少的场景,符合你的需求
内容的提问来源于stack exchange,提问作者Dmytro
相关产品推荐
相关产品推荐

