Ich möchte den Wert des Feldes mit dem Namen "Gram" aus dem letzten Datensatz abrufen und seinen Wert in eine Variable einfügen, ohne Bedingungen zu verwenden.
Zuerst habe ich es versucht
int value = int.Parse(Entity.TblGold.LastOrDefault().Gram.ToString());
Zweitens habe ich es versucht
int value = int.Parse(Entity.TblGold.Select(p => p.Gram).Last().ToString());
Ich erhalte gerade diese Ausnahme:
LINQ to Entities does not recognize the method 'DataModel.TblGold LastOrDefault[TblGold](System.Linq.IQueryable``1[DataModel.TblGold])' method, and this method cannot be translated into a store expression.
Last
oder LastOrDefault
werden in LINQ to Entities nicht unterstützt. Sie können Ihre Abfrage entweder mit ToList
oder ToArray
durchlaufen und dann Last
anwenden, oder Sie können die Reihenfolge absteigend festlegen und dann die First
verwenden:
int value = int.Parse(Entity.TblGold
.OrderByDescending(p => p.Gram)
.Select(r => r.Gram)
.First().ToString());
Wenn die Liste richtig angeordnet ist, um das letzte Element zu packen, werde ich einfach die Liste umkehren und dann das erste (vorher letzte) Element auswählen:
var gram = int.Parse(Entity.TblGold.Reverse().First().Gram.ToString());
Sie können es nicht in einer Abfrage machen, aber Sie können es in zwei Abfragen.
var countOfRows = tbl.Count();
var lastRow = tbl.Skip(countOfRows - 1).FirstOrDefault();