我有一些具有 CategoryId 成员的 EF 代码第一类,该成员也在名为 ICategoryFilterable 的接口中定义。
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 基元或枚举类型。