linq 如何合并两个整数列并将其转换为datetime lambda c#

to94eoyn  于 2023-01-28  发布在  C#
关注(0)|答案(1)|浏览(162)

我在SQL数据库中有2个int列,一个用于月,一个用于年,我想针对数据库查询此列,例如,DateFrom是dateTime,DateTo是DataTime

var result = GetAll().Where(x =>
        (x.InvoiceMonth >= DateFrom.Month && x.InvoiceYear >= DateFrom.Year)
                  &&
        (x.InvoiceMonth <= DateTo.Month && x.InvoiceYear <= DateTo.Year));

但如果用户将1/1/2021发送到1/1/2023,则会出现问题
它只返回2021年1月、2022年1月和2023年1月
正确的回报应该返回2个日期之间的所有东西

pbpqsu0x

pbpqsu0x1#

您可以使用现有数据构造日期

var result = GetAll().Where(x => 
     (new DateTime(x.InvoiceYear, x.InvoiceMonth, 1) >= 
      new DateTime(DateFrom.InvoiceYear, DateFrom.InvoiceMonth, 1))
              &&
    (new DateTime(x.InvoiceYear, x.InvoiceMonth, 1) <= 
      new DateTime(DateTo.InvoiceYear, DateTo.InvoiceMonth, 1)));

相关问题