【问题标题】:Message LINQ to Entities does not recognize the method System.Object Get(Int32, Int32) method [duplicate]Message LINQ to Entities 无法识别 System.Object Get(Int32, Int32) 方法 [重复]
【发布时间】:2017-11-16 13:07:59
【问题描述】:
我正在尝试从 Linq 获取列表到实体查询
List<int> meas_i = wc.measures
.Where(meas => meas.shortname == (valueArray[i, 8] ?? "").ToString())
.Select(meas => meas.idmeasure)
.ToList<int>();
但执行后我得到以下异常(不支持)消息:
ComplexWorkWinDraw.exe 中出现“System.NotSupportedException”类型的未处理异常
附加信息:LINQ to Entities 无法识别该方法
'System.Object Get(Int32, Int32)' 方法,而这个方法不能
翻译成商店表达式。
请帮忙。谢谢大家
【问题讨论】:
标签:
c#
entity-framework
linq
【解决方案1】:
尝试在查询之前将其存储在变量中:valueArray[i, 8]
string shortName = (valueArray[i, 8] ?? "").ToString();
List<int> meas_i = wc.measures
.Where(meas => meas.shortname == shortName)
.Select(meas => meas.idmeasure)
.ToList<int>();
此查询中的所有内容都必须转换为 SQL。但由于此值与记录/项目无关,您可以在查询之前将其存储在单独的变量中。