rea*_*ers 3 linq entity-framework linq-to-sql
我有两个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()));
}
Run Code Online (Sandbox Code Playgroud)
我想创建另一个IQueryable,它将两个查询组合为OR例如
public static IQueryable<Counterparty> SearchByCodeOrName(this IQueryable<Counterparty> queryable, string searchQuery)
{
// return SearchByName(searchQuery) OR SearchByCode(searchQuery)
}
Run Code Online (Sandbox Code Playgroud)
我宁愿避免重复代码,所以我想重用现有的可查询而不是重写一个新的lambda表达式 Where(x=> x.Code.StartsWith.... || x.Name.Contains.....)
你可以将两者的结果联合起来
public static IQueryable<Counterparty> SearchByCodeOrName(this IQueryable<Counterparty> queryable, string searchQuery)
{
return SearchByName(searchQuery).Union(SearchByCode(searchQuery))
}
Run Code Online (Sandbox Code Playgroud)