C# LINQ to Entities:where子句中的可空datetime
我有一个where子句,用于查找实体上的子对象: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语句:
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();