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

LINQ to Entities does not recognize the method - Include + Where

我有这个工作代码

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

但是当我添加 where 条件时

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.

我该如何重写它?我是初学者 :-) 谢谢

试试这个:

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

只有活动可以解析为您的提供商支持的表达式树

这是您的Where-表情造成的。您应该只在其中使用变量或调用可以转换为 SQL 的方法。

首先,将您的 Session 值保存在一个变量中:

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

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

MSDN provides a list 可以在 LINQ to SQL 表达式中使用的方法以及它们如何映射到 SQL 函数。