作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我的枚举。真的很基本。枚举没有相应的数据库表。相反,只要一个类有一个 MyEnum 属性,数据库就有一个 int 列。一切正常。
public enum MyEnum : int
{
Zero = 0,
One = 1,
Two = 2
}
这是我的类(class),它在数据库中有自己的表。
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;
}
}
最佳答案
这在 EF (.NET 4.5) 的下一个主要版本之前不支持。在 .NET 4.5 之前,您必须将 int 传递给您的查询(转换必须在您的查询之外完成)。最好的解决方法是 this .
关于linq - 在 Entity Framework Where 子句中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144201/
我是一名优秀的程序员,十分优秀!