我有兩個IQueryables的:執行或兩個LINQ IQueryables
public static IQueryable<Counterparty> SearchByCode(this IQueryable<Counterparty> queryable, string searchQuery)
{
return queryable.Where(x => x.Code.StartsWith(searchQuery.ToUpper()));
}
public static IQueryable<Counterparty> SearchByName(this IQueryable<Counterparty> queryable, string searchQuery)
{
return queryable.Where(x => x.Name.ToLower().Contains(searchQuery.ToLower()));
}
我想創建另一個IQueryable的它結合了兩個查詢作爲或EG
public static IQueryable<Counterparty> SearchByCodeOrName(this IQueryable<Counterparty> queryable, string searchQuery)
{
// return SearchByName(searchQuery) OR SearchByCode(searchQuery)
}
我寧願避免重複的代碼,所以我想重複使用現有的查詢語句,而不是重寫一個新的lambda表達式,如Where(x=> x.Code.StartsWith.... || x.Name.Contains.....)
這實際上是我自己提出的方法!好答案! – reach4thelasers
@ reach4thelasers:你應該看看[Albaharis的PredicateBuilder](http://www.albahari.com/nutshell/predicatebuilder.aspx)和[這個EF/ORM友好版本](http://petemontgomery.wordpress。 com/2011/02/10/a-universal-predicatebuilder /)和[後者的鏈接解釋](http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities -combining-predicates.aspx)關於如何使用表達式解決問題。 :-) –