Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用Linq在asp.net MVC中获取两个日期之间的天数_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何使用Linq在asp.net MVC中获取两个日期之间的天数

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 //

我需要使用Linq查询从数据库中获取两个日期之间的天数,请帮助我如何做到这一点。谢谢

我尝试了下面的代码,但它返回我的结果nul!请帮忙

 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});