如何在 linq where 条件中传递可选参数

Ank*_*pta 3 c# linq entity-framework asp.net-mvc-4

我在 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();
}
Run Code Online (Sandbox Code Playgroud)

现在如果FromDateToDate为空,那么我得到QueryData计数为零。但我需要所有记录。所以谁能告诉我我怎样才能得到预期的结果。虽然FromDate&ToDate有价值,那么我得到了预期的结果。

Waq*_*med 5

根据您提供的信息

改变你下面的语句:

var QueryData = query.Where(s => s.MSO == ms && (FromDate != null && (s.TEST_DATE.Value >= FromDate)) && (ToDate!=null && (s.TEST_DATE.Value<=ToDate))).ToList();
Run Code Online (Sandbox Code Playgroud)

var QueryData = query.Where(s => s.MSO == ms && (FromDate == null || (s.TEST_DATE.Value >= FromDate)) && (ToDate == null || (s.TEST_DATE.Value<=ToDate))).ToList();
Run Code Online (Sandbox Code Playgroud)

如果FromDateOrToDate将等于NULL,则不会根据 来检查它们s.TEST_DATE.Value