2011-02-01 28 views
5

Cuando uso la consultaASP.NET MVC LINQ consulta

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

me sale error como este

LINQ a Entidades no reconoce el método 'SocialSports.Models.match LastOrDefaultmatch' método, y este método no puede ser traducido a una expresión de tienda.

¿Qué hay de malo en mi código ???

Gracias ...

Respuesta

7

No se puede utilizar para consultar LastOrDefault entidades EF, ya que no se puede traducir a T-SQL.

No todos los métodos LINQ son compatibles con Linq para Entidades.

Lista de TODOS los métodos admitidos/no admitidos:

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

Usted podría intentar

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

pero esto va a cargar todos los partidos de la db y realizar LINQ a objetos .

O intente ordenar y llame al FirstOrDefault.

+0

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

+1

de esta manera no es bueno. Porque puede haber muchos elementos en db. –

+0

@ ДарияПечайко - eso es precisamente lo que escribí en mi respuesta. –

8

LastOrDefault no está soportada en LINQ a Entidades. Puede lograr lo mismo usando lo siguiente:

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