【问题标题】:IQueryable Lambda Expression for every Nth date每 N 个日期的 IQueryable Lambda 表达式
【发布时间】:2021-09-17 04:48:47
【问题描述】:

我有一个包含一系列日期的日历表,我正在尝试编写一个查询,每 N 个日期给我一次。我可以在 SQL 中毫无困难地做到这一点,但是当用 IQueryableWhere 条件编写它时,我似乎无法让它工作。

例如,我可以在 SQL 中执行类似的操作来获取每三个日期:

Select _date 
from Calendar 
where datediff(day, startdate, _date) % 3 = 0

但是一个类似的IQueryable lambda 表达式会抛出一个System.ArgumentException(当查询被执行时)

var q = dbcontext.Calendar
                 .Where( c => (c._date - startdate).Days % 3 == 0);

有没有其他方法可以让它工作?

【问题讨论】:

    标签: c# entity-framework lambda iqueryable


    【解决方案1】:

    像这样:

    var q = dbcontext.Calendar
                     .Where(c => EF.Functions.DateDiffDay(startdate, c._date) % 3 == 0);
    

    【讨论】:

    • 谢谢!我应该说我使用的是 EF6,但你的回答帮助我找到了DbFunctions.DiffDays
    【解决方案2】:

    您无法在 EF 中使用 lambda 表达式,但您可以使用 raw queries 并根据需要使用您已经编写的 sql 查询(或使用存储过程)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      相关资源
      最近更新 更多