Depending on which code you want to reuse, this may be an alternative way to do this if you are not duplicating the inner workings of your query conditions:
private static Func<Counterparty, string, bool> CodeStartsWith = (x, searchQuery) => x.Code.StartsWith(searchQuery.ToUpper());
private static Func<Counterparty, string, bool> NameContains = (x, searchQuery) => x.Name.Contains(searchQuery.ToLower());
public static IQueryable<Counterparty> SearchByCode(this IQueryable<Counterparty> queryable, string searchQuery)
{
return queryable.Where(x => CodeStartsWith(x, searchQuery));
}
public static IQueryable<Counterparty> SearchByName(this IQueryable<Counterparty> queryable, string searchQuery)
{
return queryable.Where(x => NameContains(x, searchQuery));
}
public static IQueryable<Counterparty> SearchByCodeOrName(this IQueryable<Counterparty> queryable, string searchQuery)
{
return queryable.Where(x => NameContains(x, searchQuery) || CodeStartsWith(x, searchQuery));
}
source
share