これは私の列挙型のためです。本当に基本的。 enumには対応するデータベーステーブルがありません。むしろ、クラスにMyEnumプロパティがあるときはいつでも、データベースにはintカラムがあります。それはすべて正常に動作します。エンティティフレームワークで列挙型を使用するWhere句
public enum MyEnum : int
{
Zero = 0,
One = 1,
Two = 2
}
これは自分のクラスで、データベースに独自のテーブルがあります。
public class MyClass
{
public long MyClassID { get; set; }
public MyEnum { get; set; }
}
私はMyClassのオブジェクトを引き出しに行くときに、MyEnumプロパティが万歳、それに対応するint型の値に設定されています。私の問題は、私はMyEnumプロパティを使用するクエリを記述しようとすると、私はエラーが発生します。
public List<MyClass> FindAllOfEnum(MyEnum myEnum)
{
using (DbContext db = new DbContext())
{
return db.MyClasses.Where(x => x.MyEnum == myEnum);
}
}
// ERROR:
// The specified type member 'MyEnum' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
は、だから私は、この値の拡張メソッドを書いてみましたが、私は私が実際に機能を置くことができないので、私は、比較の右側にMyEnumの参照を取り出すことができるようになることに気づきましたラムダ式。何ですか?
public static class Extensions
{
public static int Value(this MyEnum myEnum)
{
return (int)myEnum;
}
}
投稿する前に検索機能を使用してください。これを尋ねる質問はたくさんあります。 – Eranga
さあ、あなたのスナイダーのコメントと一緒にリンクを提供してください。 – OpticalDelusion