我对where子句中的函数使用感到迷茫。如果我直接在Where方法中编写谓词,则会得到结果,但是如果我更早指定谓词,然后在where子句中使用谓词,则除了超时之外,我什么也没有。
我不明白为什么,请任何人解释?
第一个带有内联谓词的
List<POC_TEST_Diagnostic> list;
using (var context = new EXPE0_Reporting_Entities())
{
var dateMin = (DateTime?)DateTime.Today.AddMonths(-1);
var dateMax = (DateTime?)DateTime.Today;
var dbQuery = context.POC_TEST_Diagnostic;
list = dbQuery
.Where(d => (string.IsNullOrEmpty("Foixet") || d.ResourceName.Contains("Foixet")) &&
(!dateMin.HasValue || dateMin <= d.TimeByDay) &&
(!dateMax.HasValue || dateMax >= d.TimeByDay))
.ToList();
}
具有谓词的第二个已经创建:
List<POC_TEST_Diagnostic> list;
using (var context = new EXPE0_Reporting_Entities())
{
var dateMin = (DateTime?)DateTime.Today.AddMonths(-1);
var dateMax = (DateTime?)DateTime.Today;
var func = new Func<POC_TEST_Diagnostic, bool>(d => (string.IsNullOrEmpty("Foixet") || d.ResourceName.Contains("Foixet")) &&
(!dateMin.HasValue || dateMin <= d.TimeByDay) &&
(!dateMax.HasValue || dateMax >= d.TimeByDay));
var dbQuery = context.POC_TEST_Diagnostic;
list = dbQuery.Where(func).ToList();
}
就像我说的那样,第一个方块给我结果,而第二个方块没有给我