所以這裏是我的枚舉。真的很基礎。枚舉沒有相應的數據庫表。相反,只要一個類有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值hooray。我的問題是,當我嘗試編寫使用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參考,因爲我不能把函數實際上在lambda表達式。做什麼?
public static class Extensions
{
public static int Value(this MyEnum myEnum)
{
return (int)myEnum;
}
}
請在發佈之前使用搜索功能。有很多問題要問這個問題。 – Eranga
那麼隨時隨地提供一個鏈接以及你的諷刺評論。 – OpticalDelusion