2011-02-01 126 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();