如何在 LINQ 中减去两个日期?

How to subtract two dates in LINQ?

我在减去 MySQL 数据库中的两个日期并将它们与 int 数字进行比较时遇到问题。我尝试使用 dbfunctions.diffdays 但这是类型冲突。

当我启动应用程序时,我收到一条消息:

System.ArgumentException: 'DbArithmeticExpression arguments must have a numeric common type.'

下面是我的代码 我

    int intervalDay = 25;
    var dateCount = (from Rezerwacje in db.Rezerwacje
                     join rooms in db.rooms on Rezerwacje.PokojID equals rooms.id
                     where (rooms.floor > 0 && rooms.floor <= 2) &&(Rezerwacje.DataDo == dateTime) && ((Rezerwacje.DataDo - Rezerwacje.DataOd).Days > intervalDay)
                     select Rezerwacje).Count();
                     return dateCount;

你可以使用 System.Data.Objects.EntityFucntions

在代码中:

where ... &&
      EntityFunctions.DiffDays(Rezerwacje.DataDo, Rezerwacje.DataOd) > intervalDay
 using System.Data.Entity;

 //code in LINQ
 ... DbFunctions.DiffDays(Rezerwacje.DataDo, Rezerwacje.DataOd) >= intervalDay

最终我使用了 List 和 foreach。

正在从数据库下载数据:

public int DateCleanFloor1to2(DateTime dateTime)
{
            var dateList = (from Rezerwacje in db.Rezerwacje
                            join rooms in db.rooms on Rezerwacje.PokojID equals rooms.id
                            where (rooms.floor > 0 && rooms.floor <= 2) && (Rezerwacje.DataDo == dateTime)
                            select Rezerwacje).ToList();

            return SubtractDateToDateFrom(dateList, dateTime.AddDays(25));
 }

以及带有 foreach 循环的方法:

public int SubtractDateToDateFrom(List<Rezerwacje> dateList, DateTime dateTime)
{
            int count = 0;
            foreach (var item in dateList)
            {
                if (item.DataDo < dateTime)
                {
                    count++;
                }
            }

            return count;
}

@DevilSuichiro @Arulkumar @Seven