2016-07-05 108 views
0
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_變量值添加條件?IF ELSE在LINQ的WHERE子句下的語句

謝謝。

+0

我認爲這個問題有點令人困惑,因爲'_isStaging' * *是條件。 –

+0

@ un-lucky不,他們的條件是:&&'(if(isStaging_)task.IsCurrent == true else task.AutoAuditNotes.ToLower()!= auditString.ToLower())' – simpleProgrammer

+0

我認爲condition1是條件if isStaging_是真的,否則它會是條件2。 – Kinetic

回答

4

你可以做這樣的事情:

where task.RevisionDateTime > startDateTime_ 
         && task.RevisionDateTime <= endDateTime_ 
         && task.AutoAuditNotes.ToLower() != auditString.ToLower() 
         && ((isStaging_ && condition1) || condition2) 
         select task).ToList(); 
+0

謝謝它的作品,但我很難理解代碼:)對不起,你能解釋一下嗎?謝謝 – simpleProgrammer

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

內存管理和LOC有什麼關係? –

3

這不是一個直接的答案 - 我upvoted動能的答案。但是這個評論需要一些代碼格式,不能發表評論。

如果將條件分解爲單獨的函數,這將變得更具可讀性。例如,無論這是什麼:

&& ((isStaging_ && condition1) || condition2) 

把它放在它自己的函數中,用一個名字來描述它正在檢查什麼。分支會使人們難以閱讀和關注,即使是一週後寫出來的人也是如此。但是,如果它是一個函數調用,那麼該函數的名稱將作爲註釋。

長的LINQ查詢奇怪地令人滿意,但對其他人來說,要理解他們正在做的事情可能非常困難。

+0

哦,我完全同意你的看法。 – Kinetic