簡體   English   中英

LINQ的WHERE子句下的IF ELSE語句

[英]IF ELSE Statement under LINQ's WHERE clause

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM