亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linq Where()lambda表達式中的“或”等價物

Linq Where()lambda表達式中的“或”等價物

狐的傳說 2019-11-12 12:53:23
Linq中是否有一種方法可用于構建“ ... where(a = 1)OR(a = 2)”之類的SQL字符串?
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

您當然可以在Where子句(擴展方法)中執行此操作。但是,如果需要動態構建復雜的查詢,則可以使用PredicateBuilder。


 var query = collection.Where( c => c.A == 1 || c.B == 2 );

或使用PredicateBuilder


 var predicate = PredicateBuilder.False<Foo>();

 predicate = predicate.Or( f => f.A == 1 );

 if (allowB)

 {

    predicate = predicate.Or( f => f.B == 1 );

 }


 var query = collection.Where( predicate );


查看完整回答
反對 回復 2019-11-12
?
森林海

TA貢獻2011條經驗 獲得超2個贊

現在,它已內置到.net中,不確定以前是否已建立。給定一個現有的Linq查詢,您可以添加一個帶字符串數組(SearchStrings)的where子句,并檢查它們是否與您要搜索的集合中的任何對象匹配。使用ToLower()只是確保您避免在SQL查詢中區分大小寫。


query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));

通過將數組中的所有單詞與集合的對象匹配,可以對“和”謂詞執行相同的操作。


query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));

在此示例中,我與集合中的每個對象相關,而s與SearchStrings數組中的每個字符串相關。


查看完整回答
反對 回復 2019-11-12
  • 3 回答
  • 0 關注
  • 1285 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號