ASP.NET MVC LINQ查询

5
当我使用查询时,

var NewMatchs = (from x in entity.matches select x).LastOrDefault();

我遇到了这样的错误

LINQ to Entities 不认识 'SocialSports.Models.match LastOrDefaultmatch' 方法,这个方法无法转换成存储表达式。

我的代码哪里出了问题?

谢谢...

3个回答

8

LastOrDefault在Linq to Entities中不被支持。您可以使用以下方法来实现相同的功能:

var lastmatch = (from x in entity.matches select x)
                      // Assuming you have some kind of timestamp
                     .OrderByDescending(s => s.Date) 
                     .FirstOrDefault();

7

您不能使用LastOrDefault来查询EF实体,因为它无法转换为T-SQL。

并非所有的LINQ方法都被Linq to Entities支持。

所有支持/不支持方法列表:

http://msdn.microsoft.com/en-us/library/bb738550.aspx

您可以尝试

var NewMatchs = (from x in entity.matches select x).ToList().LastOrDefault();

但是这会从数据库中加载所有匹配项并执行Linq to objects查询。

或者尝试排序并调用FirstOrDefault方法。


.ToList().LastOrDefault() 太棒了! - timothyclifford
1
这种方法不好。因为数据库中可能有很多条目。 - Дария Печайко
@ДарияПечайко - 这正是我在答案中写的。 - Jakub Konecki


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接