【发布时间】:2011-11-15 22:44:12
【问题描述】:
这就是我的枚举。真的很基础。枚举没有对应的数据库表。相反,只要一个类具有 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.
所以我尝试编写这个值扩展方法,但我意识到这只会让我取出比较右侧的 MyEnum 引用,因为我不能将函数实际放入 lambda 表达式中。做什么?
public static class Extensions
{
public static int Value(this MyEnum myEnum)
{
return (int)myEnum;
}
}
【问题讨论】:
-
发帖前请使用搜索工具。有很多问题在问这个问题。
-
那么请随时提供一个链接以及您的讽刺评论。
标签: linq entity-framework enums lambda