2011-02-01 5 views
5

Lorsque j'utilise la requêteASP.NET MVC LINQ requête

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

J'obtiens l'erreur comme ce

LINQ to Entities ne reconnaît pas la méthode 'SocialSports.Models.match LastOrDefaultmatch' méthode, et cette méthode ne peut pas être traduit dans une expression de magasin.

Qu'est-ce qui ne va pas dans mon code ???

Merci ...

Répondre

7

Vous ne pouvez pas utiliser LastOrDefault pour interroger les entités EF, car il ne peut pas être traduit à T-SQL.

Toutes les méthodes LINQ ne sont pas prises en charge par Linq to Entities.

Liste de tous pris en charge/non pris en charge les méthodes:

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

Vous pouvez essayer

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

mais cela chargera tous les matchs de la db et effectuer Linq à des objets . Ou essayez le tri et appelez FirstOrDefault.

+0

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

+1

de cette façon n'est pas bon. Parce qu'il peut y avoir beaucoup d'éléments dans db. –

+0

@ ДарияПечайко - c'est exactement ce que j'ai écrit dans ma réponse. –

8

LastOrDefault est pas pris en charge dans LINQ to Entities. Vous pouvez obtenir la même chose en utilisant ce qui suit:

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