Итак, вот что у меня есть для моего перечисления.Действительно простой.Перечисление НЕ имеет соответствующей таблицы базы данных.Скорее, когда у класса есть свойство MyEnum, в базе данных есть столбец int.Это все работает нормально.
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.
Поэтому я попытался написать этот метод расширения Value, но понял, что это позволит мне только вынутьссылка MyEnum в правой части сравнения, поскольку я не могу поместить функцию на самом деле в лямбда-выражение.Что делать?
public static class Extensions
{
public static int Value(this MyEnum myEnum)
{
return (int)myEnum;
}
}