Nel*_*eis 7 c# linq enums .net-3.5
我有像这样的Linq to Entities查询:
var results = from r in entities.MachineRevision
where r.Machine.IdMachine == pIdMachine
&& r.Category == (int)pCategory
select r;
Run Code Online (Sandbox Code Playgroud)
通常,我使用下面的代码来检查是否返回了一些结果:
if (results.Count() > 0)
{
return new oMachineRevision(results.First().IdMachineRevision);
}
Run Code Online (Sandbox Code Playgroud)
但是,我在if条件中得到NotSupportedException.
错误消息是:无法创建类型'Closure type'的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').
请注意,pCategory是Enum类型.
tva*_*son 11
编辑:根据您的更新,错误可能与您的实体类中的枚举有关.有关更多信息和解决方法,请参阅此博客条目.我将原始答案作为对查询语法的改进.
尝试使用FirstOrDefault在查询本身中选择第一个实体,然后检查结果是否为null.
int compareCategory = (int)pCategory; // just a guess
var result = (from r in entities.MachineRevision
where r.Machine.IdMachine == pIdMachine
&& r.Category == compareCategory
select r).FirstOrDefault();
if (result != null)
{
return new oMachineRevision(result.IdMachineRevision);
}
Run Code Online (Sandbox Code Playgroud)