3 回答

TA貢獻1811條經(jīng)驗 獲得超6個贊
您當然可以在Where子句(擴展方法)中執(zhí)行此操作。但是,如果需要動態(tài)構(gòu)建復(fù)雜的查詢,則可以使用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條經(jīng)驗 獲得超2個贊
現(xiàn)在,它已內(nèi)置到.net中,不確定以前是否已建立。給定一個現(xiàn)有的Linq查詢,您可以添加一個帶字符串數(shù)組(SearchStrings)的where子句,并檢查它們是否與您要搜索的集合中的任何對象匹配。使用ToLower()只是確保您避免在SQL查詢中區(qū)分大小寫。
query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));
通過將數(shù)組中的所有單詞與集合的對象匹配,可以對“和”謂詞執(zhí)行相同的操作。
query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));
在此示例中,我與集合中的每個對象相關(guān),而s與SearchStrings數(shù)組中的每個字符串相關(guān)。
- 3 回答
- 0 關(guān)注
- 1289 瀏覽
添加回答
舉報