LINQ to Entities 不识别方法“XX”,因此该方法无法转换为存储表达式

注:即由于LINQ是在使用数据时再进行查询,因此,有些方法在数据库中无法执行,此时可以通过分步操作,即先将第一步的查询取出,添加方法并执行后进行第二步的查询。


LINQ to Entities 不识别方法“XX”,因此该方法无法转换为存储表达式 

使用LINQ to Entities一不小心就会碰上类似的错误:

引用内容
。LINQ to Entities 不识别方法“XX”,因此该方法无法转换为存储表达式

总结了下,出现这种错误情形大体分为两种,下边分别举例并说下解决方法。

情形一

报错代码:
复制内容到剪贴板程序代码
string age = "20";
var query = from item in context.People
            where item.Age == int.Parse(age)
            select item;

这边age是一个外部值,试图中LINQ to Entities中类型转化,不支持,所以报错,只需在LINQ to Entities前先转化类型即可解决:

复制内容到剪贴板程序代码
int age = int.Parse("20");
var query = from item in context.People
            where item.Age == age
            select item;

情形二

报错代码:
复制内容到剪贴板程序代码
var query = from item in context.People
            group item by item.Created.ToShortDateString() into g
            select new { Created = g.Key, Count = g.Count() };

这边要转化的是字段值,因而无法像情形一那样在外部先处理,解决方法是将数据先从数据库读取出来,然后在内存中使用LINQ to Objects解决:

复制内容到剪贴板程序代码
var query = from item in context.People.ToList()
            group item by item.Created.ToShortDateString() into g
            select new { Created = g.Key, Count = g.Count() };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值