欢迎光临

木子屋

标题: LINQ to Entities不识别方法XX因此该方法无法转换为存储表达式解决方法

作者: dnawo

日期: 2012-10-31 11:54 AM

分类: Web编程

内容: 使用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;
或是使用表达式树：
复制内容到剪贴板 程序代码string age = "20";
Expression<Func<Person, bool>> exp = item => item.Age == int.Parse(age);
var query = context.People.Where(exp.Compile());
情形二
报错代码：
复制内容到剪贴板 程序代码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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.273 ms

返回

标题: LINQ to Entities不识别方法XX因此该方法无法转换为存储表达式解决方法

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.273 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.305 ms

返回