我有以下查询:
var query = (from e in conn.equipments
select new
{
id = e.id,
status = GetEquipmentStatusText(e.status)
}).ToList();
public static string GetEquipmentStatusText(int status) {
return (status == 1) ? "Active" : "Not Active";
}
这会导致错误:LINQ to Entities无法识别方法
如何以“GetEquipmentStatusText”集中到可以在其他LINQ查询中调用的方法的方式修复它?
答案 0 :(得分:3)
不要使用该方法调用来代替您的情况。
status = e.status == 1 ? "Active" : "Not Active"
LINQ to EF会尝试将您的LINQ表达式转换为铺设数据源语言(可能是SQL),并且由于SQL不了解您的方法,因此它将失败。
您可以在没有该方法的情况下执行查询,然后在内存中集合上执行您的方法。像:
var query = (from e in conn.equipments
select new
{
id = e.id,
status = e.status
}).AsEnumerable(); //as Servy pointed out
var result = (from e in query
select new
{
id = e.id,
status = GetEquipmentStatusText(e.status)
}).ToList();