where task.RevisionDateTime > startDateTime_
&& task.RevisionDateTime <= endDateTime_
&& task.AutoAuditNotes.ToLower() != auditString.ToLower()
&& (if(isStaging_) condition1 else condition2)
select task).ToList();
在where子句中,我有这个IF ELSE语句&& (if(isStaging_) condition1 else condition2)
。如何在WHERE子句下添加条件保护isStaging_
变量的值?
感谢。
答案 0 :(得分:5)
您可以这样做:
where task.RevisionDateTime > startDateTime_
&& task.RevisionDateTime <= endDateTime_
&& task.AutoAuditNotes.ToLower() != auditString.ToLower()
&& ((isStaging_ && condition1) || condition2)
select task).ToList();
答案 1 :(得分:4)
这不是一个直接的答案 - 我赞成了KiNeTiC的答案。但是这个评论需要一些不能发表评论的代码格式化。
如果将条件分解为单独的函数,这将变得更具可读性。例如,无论如何:
&& ((isStaging_ && condition1) || condition2)
将它放在自己的函数中,其名称描述了它正在检查的内容。分支将使某人难以阅读和关注,甚至是一周之后写作的人。但如果它是一个函数调用,则该函数的名称用作注释。
长LINQ查询在编写时非常令人满意,但是其他人很难理解他们正在做什么。
答案 2 :(得分:0)
你试试
if(isStaging_)
{
//condition1
where task.RevisionDateTime > startDateTime_
&& task.RevisionDateTime <= endDateTime_
&& task.AutoAuditNotes.ToLower() != auditString.ToLower()
select task).ToList();
}
else
{
//condition2
where task.RevisionDateTime > startDateTime_
&& task.RevisionDateTime <= endDateTime_
&& task.AutoAuditNotes.ToLower() != auditString.ToLower()
select task).ToList();
}