我可以成功地从我的控制器返回一个模型:
return View(lemonadedb.Messages.ToList() );
我的观点完全解释了它。
现在我只想显示Messages.user == Membership.GetUser()。ToString()。
的消息。但是当我这样做时:
return View(lemonadedb.Messages.Where( p => p.user == Membership.GetUser().ToString()).ToList());
我明白了:
'LINQ to Entities无法识别 方法'System.String ToString()' 方法,这个方法不能 翻译成商店表达。'
我需要一些方法来缩小消息表的结果。
我应该以某种方式使用find()方法吗?我以为这只是为了ID。
我该怎么做?
答案 0 :(得分:3)
您遇到此问题的原因是Entity Framework正在尝试将表达式Membership.GetUser().ToString()
计算为SQL查询。您需要创建一个新变量来存储此表达式的值并将其传递给查询。然后,实体框架将按照您的预期解释它。
以下内容应该有效:
var user = Membership.GetUser().ToString();
return View(lemonadedb.Messages.Where(p => p.user == user).ToList());
我怀疑这是人们在编写实体框架查询时犯的一个非常常见的错误。