Where 内的 Linq 语句

标签 linq

我正在构建一个查询工具,供非技术人员使用以从数据库中检索记录。

我有一个包含各种下拉菜单的表单,用户可以根据他们想要的内容进行选择。

我遇到一个问题,即我的查询返回与用户选择不匹配的记录。

我相信这只在我查询连接表时才会发生。

我有以下内容:

results = results.Where(c => c.CustomerEnrollment
                  .Where(x => x.CustomerCategoryID == CustomerCategoryID)
                  .Any());

results = results.Where(c => c.CustomerEnrollment
              .Where(x => x.StartDate <= DateRangeStart && x.EndDate >= DateRangeStart)
              .Any());

这将返回正确类别的结果,但不在指定的日期范围内。

我也尝试过:

results = results.Where(c => c.CustomerEnrollment
                          .Any(x => x.CustomerCategoryID == CustomerCategoryID));

最佳答案

尝试将日期范围检查更改为;

更改:

x => x.StartDate <= DateRangeStart && x.EndDate >= DateRangeStart

致:

//StartDate should be greater than or equal to
//EndDate should be less than or equal to
//Also you are using same variable DateRangeStart to check start and end
x => x.StartDate >= DateRangeStart && x.EndDate <= DateRangeEnd

关于Where 内的 Linq 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20140625/

相关文章:

c# - 使用 linq 查询和 lambda 表达式选择多列

c# - linq 不区分大小写(没有 toUpper 或 toLower)

c# - 使用 LINQ 减去表中的列

c# - 如何使用 Linq 对 List<IDictionary> 对象的结果进行排序?

c# - 如何使用 Linq 或 Lambda 执行更新?(C#, Asp.net,Linq , Lambda)

c# - 模拟使用 contains 运算符而不是 equals 的连接?

c# - Fluent Nhibernate QueryOver 仅按日期获取记录而没有时间

java - 什么是 Linq 和 Entity Framework 的 Java 等价物

c# - LINQ/Lambda 通过将列表项分成偶数组来更新列表项

linq - 如何调试 LINQ 语句