如何在 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
我在减去 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