Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ to Entities:where子句中的可空datetime_C#_Entity Framework_Entity Framework 4 - Fatal编程技术网

C# LINQ to Entities:where子句中的可空datetime

C# LINQ to Entities:where子句中的可空datetime,c#,entity-framework,entity-framework-4,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(); 有时,co.OffDate可以为空,这将导致异常。现在,我唯一能想到的解决方法就是使用if语句:

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

var Lookup = row.Offenses.Where(x => x.Desc == co.Desc && x.Action == co.Action && x.AppealYN == co.AppealYN && x.OffDate == co.OffDate).ToList();
有时,
co.OffDate
可以为空,这将导致异常。现在,我唯一能想到的解决方法就是使用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();
                                }

我是否可以重写linq查询来完成if语句的功能?即使
co.OffDate
为空,我仍然要进行查找

我会重写它以使其更具可读性(在我看来):


您可以在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();

在您的数据库中,datetime字段可以为空吗?那么您是否希望返回所有OffenseDate的Offense结果都为空的
OffenseDate
?是的,我希望返回结果,即使OffenseDate为空。是co.OffenseDate还是co.OffDate?在你的问题中,它是双向的。“我的回答是假设co.OffDate。”德鲁斯哈弗编辑了我的问题。我们开始吧。这正是我需要的。谢谢
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();