我有这个有效的代码
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.
我怎样才能改写它?我是初学者:-) 谢谢
答案 0 :(得分:2)
这是由您Where
- 表达引起的。您应该只在那里使用变量或调用可以转换为SQL的方法。
首先,将Session值保存在变量中:
var country = Session["country"].ToString();
然后在country
- 表达式中使用Where
。
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();
只能将活动解析为提供商支持的表达式树