2012-07-10 15 views
19

Ich erhalte eine Fehlermeldung, wenn Sie den folgenden Code verwendenWie löst man diesen Fehler in C#?

var v1 = from P in db1.QuranWordsNews where P.Aye == perId select P; 
var vv = v1.LastOrDefault(); // The error occurs here 

Die Botschaft:

LINQ to Entities erkennt nicht die Methode Methode 'TashihQuran.QuranWordsNew LastOrDefaultQuranWordsNew', und diese Methode kann nicht in einen Geschäftsausdruck übersetzt werden.

+0

mögliche Duplikate von [Fehler, Methode wird von LINQ to Entities nicht unterstützt] (http://stackoverflow.com/questions/2170141/error-method-not-supported-by-linq-to-entities) – sloth

+0

Mögliche Duplikate von [LINQ to Entities erkennt die Methode Last nicht. Wirklich?] (Http://stackoverflow.com/questions/7293639/linq-to-entities-does-not- erkennen-the-method-last-really) –

Antwort

36

Ich denke, Sie arbeiten noch in IQueriable. Statt

var vv = v1.ToList().LastOrDefault(); 

oder elegantere versucht

var vv = v1.AsEnumerable().LastOrDefault(); 
+0

Das hilft mir viel !!!! –

45

Vielleicht ist die bessere Antwort ist hier:

var vv = v1.OrderByDescending(rec => rec.Id).FirstOrDefault(); 

alle Datensätze Fetch aus der Datenbank nur den letzten Datensatz zu verwenden, ist nicht gut.

+1

Stimmen Sie mit Ihrer Aussage überein, aber enthält in OPs Fall nicht bereits v1 "alle Datensätze" aus der Datenbank? – gitsitgo

Verwandte Themen