2008-10-30 64 views
3

查找LINQ和或在谷歌證明有點困難,所以我在這裏。我可以在LINQ中執行「或」操作嗎?

我不想這麼如下:

(from creditCard in AvailableCreditCards 
where creditCard.BillToName.ToLowerInvariant().Contains(txtFilter.Text.ToLowerInvariant()) 
**or creditCard.CardNumber.().Contains(txtFilter.Text)** 
orderby creditCard.BillToName 
select creditCard) 

回答

7

支持LINQ的C#關鍵字仍然是C#。考慮將where作爲條件,如if;您以相同的方式執行邏輯操作。在這種情況下,一個邏輯或,您使用||

(from creditCard in AvailableCreditCards 
where creditCard.BillToName.ToLowerInvariant().Contains(
      txtFilter.Text.ToLowerInvariant()) 
|| creditCard.CardNumber.().Contains(txtFilter.Text) 
orderby creditCard.BillToName 
select creditCard) 
3

可以使用。凡()函數來完成這項工作。

var cards = AvailableCreditCards.Where(card=> card.CardNumber.Contains(txtFilter.Text) || card.BillToName.ToLowerInvariant().Contains(txtFilter.Text.ToLowerInvariant()); 
1

您應該使用布爾運算符,在你的語言的作品。管道|工作在C#

這裏的msdn在單| 這是msdn上的雙管||

與雙管這筆交易是它短路(如果左邊的表達式爲真不運行合適的表情)。許多人只使用雙管,因爲他們從未學過單管。

雙管的短路行爲會創建分支代碼,如果在右側運行表達式可能會產生副作用,那麼這可能會非常糟糕。

我喜歡在LINQ查詢單管的原因是 - 如果查詢在LINQ有一天用於SQL,無論是C#的或運營商的基本翻譯是SQL的OR,其動作與單管。

+0

這將是兩個管道,請。 – DOK 2008-10-30 19:45:01

相關問題