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_
变量的值?
谢谢。
你可以这样做:
where task.RevisionDateTime > startDateTime_
&& task.RevisionDateTime <= endDateTime_
&& task.AutoAuditNotes.ToLower() != auditString.ToLower()
&& ((isStaging_ && condition1) || condition2)
select task).ToList();
这不是一个直接的答案-我为KiNeTiC的答案投了赞成票。但是这个注释需要一些代码格式,这些代码格式不能放到注释中。
如果你把条件分解成单独的函数,这将变得更加可读。例如,无论这是什么:
&& ((isStaging_ && condition1) || condition2)
把它放在它自己的函数中,用一个名字描述它在检查什么。分支会让别人难以阅读和理解,即使是一个星期后写的人。但如果是函数调用,则函数名作为注释。
长LINQ查询奇怪的是令人满意的编写,但它可能是非常困难的其他人理解他们在做什么
你试试
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();
}