У меня есть несколько классов EF-кода, в которых есть элемент CategoryId, который также определен в интерфейсе под названием ICategoryFilterable.LINQ to Entities и литье
public class One : ICategoryFilterable
{
public int CategoryId { get; set; }
/* more properties here */
}
public class Two : ICategoryFilterable
{
public int CategoryId { get; set; }
/* more properties here */
}
public interface ICategoryFilterable
{
int CategoryId { get; set; }
}
Теперь я хотел бы получить записи из базы данных по указанным категориям. Я создал общий метод для этого, но он не работает, и я не могу найти решение для этого.
private IQueryable<T> FilterByCategory<T>(IQueryable<T> items, IEnumerable<int> filter)
where T : ICategoryFilterable
{
return from item in items
where filter.Contains(item.CategoryId)
select item;
}
Невозможно бросить тип 'MyNamespace.One' к типу 'MyNamespace.ICategoryFilterable'. LINQ to Entities поддерживает только листинг примитивных или перечисляемых типов EDM.
Пожалуйста, смотрите мой изменения. Однако это тоже не сработает (прочитайте исключение). – tuta4
Не могли бы вы добавить пример вашего метода метода FilterByCategory на ваш вопрос? – Oliver
См. Обновление, я добавил дополнительный родовой тип. – Oliver