我有像这样的Linq to Entities查询:
var results = from r in entities.MachineRevision where r.Machine.IdMachine == pIdMachine && r.Category == (int)pCategory select r;
通常,我使用下面的代码来检查是否返回了一些结果:
if (results.Count() > 0) { return new oMachineRevision(results.First().IdMachineRevision); }
但是,我在if条件中得到NotSupportedException.
错误消息是:无法创建类型'Closure type'的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').
请注意,pCategory是Enum类型.
编辑:根据您的更新,错误可能与您的实体类中的枚举有关.有关更多信息和解决方法,请参阅此博客条目.我将原始答案作为对查询语法的改进.
尝试使用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); }