2011-02-01 17 views
5

Quando uso la queryASP.NET MVC LINQ interrogazione

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

ottengo errore come questo

LINQ to Entities non riconosce il metodo 'SocialSports.Models.match LastOrDefaultmatch' metodo, e questo metodo non può essere tradotto in un'espressione di negozio.

Cosa c'è che non va nel mio codice ???

Grazie ...

risposta

7

Non è possibile utilizzare LastOrDefault per interrogare entità EF, in quanto non può essere tradotto in T-SQL.

Non tutti i metodi LINQ sono supportati da Linq alle entità.

elenco di tutti i metodi supportati/non supportati:

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

Si potrebbe provare

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

ma questo sarà caricare tutte le partite dal db ed eseguire LINQ to Objects .

Oppure provare a ordinare e chiamare FirstOrDefault.

+0

.ToList(). LastOrDefault() impressionante! – timothyclifford

+1

in questo modo non va bene. Perché ci possono essere molti articoli in db. –

+0

@ ДарияПечайко - questo è esattamente ciò che ho scritto nella mia risposta. –

8

LastOrDefault non è supportata in LINQ to Entities. È possibile ottenere lo stesso utilizzando il seguente:

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