Asp.net mvc 如何使用Linq在asp.net MVC中获取两个日期之间的天数
我需要使用Linq查询从数据库中获取两个日期之间的天数,请帮助我如何做到这一点。谢谢 我尝试了下面的代码,但它返回我的结果nul!请帮忙Asp.net mvc 如何使用Linq在asp.net MVC中获取两个日期之间的天数,asp.net-mvc,Asp.net Mvc,我需要使用Linq查询从数据库中获取两个日期之间的天数,请帮助我如何做到这一点。谢谢 我尝试了下面的代码,但它返回我的结果nul!请帮忙 DateTime rightNow = DateTime.Now; //int totalDays = (from d in db.vuExpiredProjectsAssigned // where d.AssignedTo==obj.DepartmentID //
DateTime rightNow = DateTime.Now;
//int totalDays = (from d in db.vuExpiredProjectsAssigned
// where d.AssignedTo==obj.DepartmentID
// select (d.AssignedDate - d.DueDate).Days).FirstOrDefault();
//var numberdays = (from pd in db.vuExpiredProjectsAssigned
// where pd.AssignedTo == obj.DepartmentID
// select SqlFunctions.DateDiff("day", pd.AssignedDate, rightNow));
var result =(from dd in db.vuExpiredProjectsAssigned
where dd.AssignedTo==obj.DepartmentID
select new
{
days=SqlFunctions.DateDiff("Day",dd.DueDate,rightNow)
});
ViewBag.ndays = result;
实体框架中不支持带有日期时间的算术。您必须使用DbFunctions*。因此,对于你陈述的第一部分,类似于:
var numberdays = ( from p in db.vuExpiredProjectsAssigned
where p.AssignedTo == obj.DepartmentID
select DbFunctions.DiffDays(p.AssignedDate,p.DueDate));
或
如需更多参考,请查看以下链接
试试这个
DbFunctions.DiffDays(dd.DueDate,rightNow).Value
更新
var rightNow= DateTime.Today.ToShortDateString();
public class democlass
{
public int count {get; set;}
}
然后像这样提问
var result =(from dd in db.vuExpiredProjectsAssigned
where dd.AssignedTo==obj.DepartmentID
select new democlass()
{
count = DbFunctions.DiffDays(dd.DueDate,rightNow).Value
});
然后检查结果变量。只要您没有在where clasuse中使用天数差,那么最好在代码中进行此计算,而不是在SQL中增加开销,因此将代码更改为:
public class democlass
{
public DateTime DueDate{get;set;}
public int count {get; set;}
}
var result =((from dd in db.vuExpiredProjectsAssigned
where dd.AssignedTo==obj.DepartmentID
select new democlass()
{
DueDate= dd.DueDate;
})).ToList();
result.ForEach(a=> {a.count = a.DueDate.Subtract(DateTime.Now).TotalDays});
var-days=(DueDate-AssigneDate).days代码>错误为“DbArrithmeticExpression参数必须具有数字公共类型”。首先具体化查询检查我的更新代码问题是否已解决?返回错误“方法'diffDays'不重载1个参数”?返回什么?我将结果存储在ViewBag中,并打印查询本身。它应该返回int数组。请把断点放在这里并检查一下好吗?从[dbo].[vuExpiredProjectsAssigned]中选择DATEDIFF(day,[Extent1].[AssignedDate],[Extent1].[DueDate])作为[C1],其中[Extent1].[AssignedTo]=@p_uLinq_0是否可以将结果转换为listvar结果=(从db.vuExpiredProjectsAssigned中的dd开始,其中dd.AssignedTo==obj.DepartmentID选择DbFunctions.DiffDays(dd.AssignedDate,dd.DueDate).Value);ViewBag.ndays=result;返回结果仍然为nulldays是匿名字段?我在数据库中使用短格式存储了一个日期。例如,2016-1-1,我这样做了,但结果仍然为null
public class democlass
{
public DateTime DueDate{get;set;}
public int count {get; set;}
}
var result =((from dd in db.vuExpiredProjectsAssigned
where dd.AssignedTo==obj.DepartmentID
select new democlass()
{
DueDate= dd.DueDate;
})).ToList();
result.ForEach(a=> {a.count = a.DueDate.Subtract(DateTime.Now).TotalDays});