在asp.net mvc5中查询两个日期值

时间:2015-05-15 13:23:20

标签: asp.net-mvc

我在数据库中有一个treatmentDate列,其中提交了治疗患者的日期。如果我需要为特定公司生成2015年1月1日至2015年1月30日期间的总和报告,我该如何构建我的查询。

以下是我所做的事情,我遇到了错误

            var treatmentSum = (from s in db.Treatments
                                where (s.CompanyId == CompanyID)
                                s.TreatmentDate >= fromDate && s.TreatmentDate <= toDate
                                select s.Amount).Sum();                
            ViewBag.TreatmentSum = treatmentSum;

这是我要搜索的治疗日期列。 enter image description here

您的指导将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

你有一些格式问题:

  var treatmentSum = (from s in db.Treatments
                            where s.CompanyId == CompanyID &&
                            s.TreatmentDate >= fromDate && s.TreatmentDate <= toDate
                            select s.Amount).Sum();                
        ViewBag.TreatmentSum = treatmentSum;

你在声明的中间有一个位置:

where (s.CompanyId == CompanyID)并且您没有将其与&&

分开

修改

如上所述,日期是字符串,您可以内联转换它们,但请注意,您可能需要提供一些CultureInfo,以便格式化程序知道如何转换日期:

  var treatmentSum = (from s in db.Treatments
                                where s.CompanyId == CompanyID &&
                                Convert.ToDateTime(s.TreatmentDate) >= fromDate && Convert.ToDateTime(s.TreatmentDate) <= toDate
                                select s.Amount).Sum();       

答案 1 :(得分:1)

您没有发布错误消息。您正尝试使用&lt; =和&gt; =来比较字符串,而是尝试将所有Date和Time变量作为DateTime属性处理。 这是LINQ表达式的一段代码:

DateTime FromDate= Convert.ToDateTime("04/20/2015");
DateTime ToDate= Convert.ToDateTime("04/28/2015");
ViewBag.TreatmentSum = GetAllTreatments.
Where(c=>Convert.ToDateTime(c.TreatmentDate)>=FromDate &&
Convert.ToDateTime(c.TreatmentDate)<=ToDate).
Sum(c=>c.Amount); 

此处还有针对您的具体问题的演示链接:https://dotnetfiddle.net/1a50HI