gpt4 book ai didi

linq - 在 Entity Framework Where 子句中使用枚举

转载 作者:行者123 更新时间:2023-12-01 13:23:30 28 4
gpt4 key购买 nike

这就是我的枚举。真的很基本。枚举没有相应的数据库表。相反,只要一个类有一个 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com