IF ELSE LINQ 的 WHERE 子句下的语句


 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();
}

相关内容

  • 没有找到相关文章

最新更新