我有这样的[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中它可以工作(不确定,没有经过测试).