LINQ to Entities无法识别方法,Method无法转换为商店表达式

时间:2017-11-08 06:19:00

标签: c# linq

我收到了这个错误:

  

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;
}

我该如何解决?

1 个答案:

答案 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子句的诞生是为了帮助过滤数据及其过滤。如果要在某处登录,最好将其与实体框架查询

分开