私は、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プリミティブまたは列挙型のキャストのみをサポートします。