【发布时间】:2012-09-06 19:15:27
【问题描述】:
我有一个标志,例如
[Flags]
public enum DaysOfTheWeek
{
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
如果我想使用 Linq 根据包含特定标志的变量进行过滤,我可以尝试在 lambda 语句中使用Enum.HasFlag 来过滤多个标志,例如
DaysOfWeek weekendFilter = DaysOfTheWeek.Saturday | DaysOfTheWeek.Sunday;
var weekends = allDays.Where(d => d.DayOfWeek.HasFlag(weekendFilter));
这目前给出:
LINQ to Entities 无法识别方法 'Boolean HasFlag(System.Enum)' 方法,并且该方法无法转换为存储表达式。
【问题讨论】:
-
从 EF6.1 开始,LINQ-to-Entities 支持
HasFlag。请参阅:data.uservoice.com/forums/… 和 entityframework.codeplex.com/workitem/1497
标签: c# linq c#-4.0 lambda linq-to-entities