相关疑难解决方法(0)

如何在Linq to Entities查询中使用标记枚举?

我有这样的[Flags]枚举:

[Flags]
public enum Status
{
  None = 0,
  Active = 1,
  Inactive = 2,
  Unknown = 4
}
Run Code Online (Sandbox Code Playgroud)

状态枚举可能包含两个值,例如:

Status s = Status.Active | Status.Unknown;
Run Code Online (Sandbox Code Playgroud)

现在我需要创建一个linq查询(LINQ to ADO.NET Entities)并询问状态为s的记录,即Active或Unknown;

var result = from r in db.Records
             select r
             where (r.Status & (byte)s) == r.Status
Run Code Online (Sandbox Code Playgroud)

当然我得到一个错误,因为LINQ to Entities只知道在Where子句中处理原始类型.

错误是:

无法创建"闭包类型"类型的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').

有可行的方法吗?我可能有一个状态枚举,有10个可能的值,并查询5个状态.如何以优雅的方式使用Flags枚举构造查询?

谢谢.

更新

这似乎是一个Linq to Entities问题.我认为在LINQ to SQL中它可以工作(不确定,没有经过测试).

.net linq enums flags

4
推荐指数
2
解决办法
9933
查看次数

标签 统计

.net ×1

enums ×1

flags ×1

linq ×1