LINQ to Entities:where子句中的nullable datetime

bro*_*oke 3 c# entity-framework entity-framework-4

我有一个where子句,用于在实体上查找子对象:

var Lookup = row.Offenses.Where(x => x.Desc == co.Desc && x.Action == co.Action && x.AppealYN == co.AppealYN && x.OffDate == co.OffDate).ToList();
Run Code Online (Sandbox Code Playgroud)

有时co.OffDate可以为null,这将导致异常.现在,我能想到的唯一方法就是使用if语句:

 if (co.OffDate.HasValue)
                                {
 var Lookup = row.Offenses.Where(x => x.Desc == co.Desc && x.Action == co.Action && x.AppealYN == co.AppealYN && x.OffDate == co.OffDate).ToList();
                                }
                                else
                                {
                                     var Lookup = row.Offenses.Where(x => x.Desc == co.Desc && x.Action == co.Action && x.AppealYN == co.AppealYN).ToList();
                                }
Run Code Online (Sandbox Code Playgroud)

无论如何我可以重写linq查询来完成if语句的作用吗?我仍然想要查找,即使它co.OffDate是null.

Dre*_*fer 8

您可以在Where过滤器中插入三元组:

var Lookup = row.Offenses
  .Where(x => 
    x.Desc == co.Desc 
    && x.Action == co.Action 
    && x.AppealYN == co.AppealYN 
    && (co.OffDate.HasValue ? x.OffDate == co.OffDate : true)
  ).ToList();
Run Code Online (Sandbox Code Playgroud)