2011-02-01 133 views
5

当我使用查询ASP.NET MVC LINQ查询

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

我得到这样

LINQ到实体错误不能识别方法 'SocialSports.Models.match LastOrDefaultmatch' 方法,而这种方法不能将 翻译成商店表达式。

我的代码出了什么问题?

谢谢...

回答

7

不能使用LastOrDefault查询EF实体,它不能被转换为T-SQL。

Linq to Entities不支持所有的LINQ方法。

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

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

你可以尝试

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

但是这将加载所有比赛从数据库,并执行LINQ到对象。

或尝试排序并致电FirstOrDefault

+0

.ToList()。LastOrDefault()awesome! – timothyclifford 2011-05-11 02:46:34

8

LastOrDefault Linq中是不支持的实体。您可以使用以下方法实现相同:

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