我收到了这个错误:
LINQ to Entities没有 识别方法'Boolean isValid(System.String,System.Nullable`1 [System.Decimal ])'方法,并且此方法无法转换为商店表达式。
这是我的代码:
private void ReadAll(Entities context)
{
var allPromotions =
(from pro in context.PROMOS.AsNoTracking()
join krig in context.KRIGS.AsNoTracking() on pro.PROM_ID equals
krig.PROM_ID
where isValid(pro.PROM_ID, pro.VALUE)
group new ItemList
{
Id = krig.KRIG_ID,
Quantity = krig.KRIG_VALUE.HasValue ? krig.KRIG_VALUE.ToString() : "1",
}
by pro into proGrpup
select new Promotion
{
Id = proGrpup.Key.PROM_ID,
Description = proGrpup.Key.DESCRIPT,
}
).ToList();
}
**//Done for logging purposes**
private bool isValid(string promId, decimal? value)
{
if (value < 0)
{
//write log
return false;
}
else
return true;
}
我该如何解决?
答案 0 :(得分:0)
试试这个
private void ReadAll(Entities context)
{
var allPromotions =
(from pro in context.PROMOS.AsNoTracking()
join krig in context.KRIGS.AsNoTracking() on pro.PROM_ID equals
krig.PROM_ID
where pro.VALUE >= 0
group new ItemList
{
Id = krig.KRIG_ID,
Quantity = krig.KRIG_VALUE.HasValue ? krig.KRIG_VALUE.ToString() : "1",
}
by pro into proGrpup
select new Promotion
{
Id = proGrpup.Key.PROM_ID,
Description = proGrpup.Key.DESCRIPT,
}
).ToList();
}
您正在尝试将自己的业务(日志)放入linq-to-entity查询中。只是说这是不可能的。您的业务可能简单或复杂。实体框架无法处理这种情况。 WHERE子句的诞生是为了帮助过滤数据及其过滤。如果要在某处登录,最好将其与实体框架查询
分开