Я работаю над методом расширения, чтобы обеспечить возможности фильтрации для нескольких объектов. Участвующие сущности бывают разных типов, но имеют общие поля, по которым можно искать.
Ниже работает в данный момент, однако мне было интересно, можно ли это "обобщить", чтобы не происходило приведение от обобщенного к явному типу?
public static IQueryable<T> PriceLow<T>(this IQueryable<T> query, decimal? priceLow)
{
if (typeof(T) == typeof(Entity1))
{
var innerQuery = (IQueryable<Entity1>) query;
var results = priceLow.HasValue ? innerQuery.Where(o => (o.ListPrice > priceLow.Value)) : innerQuery;
return (IQueryable<T>) results;
}
if (typeof(T) == typeof(Entity2))
{
var innerQuery = (IQueryable<Entity2>)query;
var results = priceLow.HasValue ? innerQuery.Where(o => (o.ListPrice > priceLow.Value)) : innerQuery;
return (IQueryable<T>)results;
}
return null;
}
Пример использования:
var foo = _repository.GetAllEntity1().PriceLow(_searchCritera.PriceLow);