LINQ to Entities无法识别方法 - Include + Where

时间:2015-01-10 13:09:56

标签: entity-framework asp.net-mvc-4

我有这个有效的代码

var h = db.MyTable.Include("Children").Include("Parent").ToList();

但是当我添加条件

var h = db.MyTable.Include("Children").Include("Parent").Where(x => x.Country==Session["country"].ToString()).ToList();

它引发了我的错误

LINQ to Entities does not recognize the method 'System.Object get_item (System.String)' method , and this method cannot be translated into a store expression.

我怎样才能改写它?我是初学者:-) 谢谢

2 个答案:

答案 0 :(得分:2)

这是由您Where - 表达引起的。您应该只在那里使用变量或调用可以转换为SQL的方法。

首先,将Session值保存在变量中:

var country = Session["country"].ToString();

然后在country - 表达式中使用Where

您可以在LINQ to SQL表达式中使用的

MSDN provides a list方法以及它们如何映射到SQL函数。

答案 1 :(得分:1)

试试这个:

var t = Session["country"].ToString();
var h = db.MyTable.Include("Children").Include("Parent").Where(x => x.Country==t).ToList();

只能将活动解析为提供商支持的表达式树