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

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數組中的每個字符串相關。
- 3 回答
- 0 關注
- 1285 瀏覽
添加回答
舉報