为什么这两个子句“ wheres”的结果不同?

时间:2019-07-17 15:57:44

标签: c# entity-framework

我对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();
  }

就像我说的那样,第一个方块给我结果,而第二个方块没有给我

0 个答案:

没有答案