2012-11-15 54 views
0

這是一個非常簡單的LINQ和/或問題。簡單的LINQ和/或查詢條件澄清

在下面的查詢摘錄中,我的意圖是獲取匹配以下三個條件中的任何一個的記錄。

我的邏輯是否正確,或者有更好的方法來描述這個嗎?

  • (t2.Username ==用戶名)& &(VIEWMODE == 1)
  • (t1.Owner ==用戶名)& &(VIEWMODE == 1)
  • (VIEWMODE == 2)

查詢摘錄

where 
((t2.Username == userName) && (viewMode == 1)) || 
((t1.Owner == userName) && (viewMode == 1)) || 
((viewMode == 2)) 
+2

這應該是正確的。 –

+0

看起來像這樣會更適合單元測試,因爲這是一個「有用或不可用」的問題。 –

回答

2

你的邏輯看起來不錯,當然,你可以做到這一點略有不同:

where ((viewMode == 1 && (t2.Username == userName || t1.Owner == userName)) 
    || viewMode == 2) 

無論看起來更好,你的眼睛我猜!

2

這應該稍微更有效地得到你同樣的結果:

viewMode == 2 || 
(viewMode == 1 && (t2.Username == userName || t1.Owner == userName))