我在MVC控制器中有一个动作
public ActionResult ExportExcel(string ReportType,DateTime? FromDate,DateTime? ToDate)
{
var query = UnitOfWork.RepoTestResAnalysis.GetAll();
var QueryData = query.Where(s => s.MSO == ms && (FromDate != null && (s.TEST_DATE.Value >= FromDate)) && (ToDate!=null && (s.TEST_DATE.Value<=ToDate))).ToList();
}
现在,如果FromDate
和ToDate
为空,那么我将获得QueryData
计数为零。但我需要所有记录。所以任何人都可以告诉我如何获得预期的结果。虽然FromDate
&amp; ToDate
有价值,然后我得到了预期的结果。
答案 0 :(得分:2)
根据您提供的信息
在下面的陈述中更改您的信息:
var QueryData = query.Where(s => s.MSO == ms && (FromDate != null && (s.TEST_DATE.Value >= FromDate)) && (ToDate!=null && (s.TEST_DATE.Value<=ToDate))).ToList();
要强>
var QueryData = query.Where(s => s.MSO == ms && (FromDate == null || (s.TEST_DATE.Value >= FromDate)) && (ToDate == null || (s.TEST_DATE.Value<=ToDate))).ToList();
如果FromDate
或ToDate
等于NULL
,则不会对s.TEST_DATE.Value
进行检查。
答案 1 :(得分:0)
你也可以这样做: 将QueryData分配更改为:
var QueryData = query.Where(s => s.MSO == ms &&
(s.TEST_DATE.Value >= (FromDate ?? DateTime.MinValue)) &&
(s.TEST_DATE.Value <= (ToDate ?? DateTime.MaxValue))).ToList();
答案 2 :(得分:0)
我知道这是一个老问题,但如果我的代码可以帮助任何人,我会很高兴。 我认为以下实施将是简短易读:
public ActionResult SomeMethod(string ReportType, DateTime? FromDate, DateTime? ToDate)
{
var query = UnitOfWork.RepoTestResAnalysis.GetAll();
var QueryData = query.Where(x => x.DateField >= (FromDate ?? x.DateField) && x.DateField <= (ToDate ?? x.DateField).ToList();
}