Je veux extraire la valeur du champ nommé "Gram" du dernier enregistrement et la mettre dans une variable, sans utiliser aucune condition.
J'ai d'abord essayé
int value = int.Parse(Entity.TblGold.LastOrDefault().Gram.ToString());
Deuxièmement, j'ai essayé
int value = int.Parse(Entity.TblGold.Select(p => p.Gram).Last().ToString());
Je viens de recevoir cette exception:
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
ou LastOrDefault
ne sont pas pris en charge dans LINQ to Entities. Vous pouvez soit réitérer votre requête en utilisant ToList
ou ToArray
, puis appliquer Last
, ou vous pouvez commander par ordre décroissant, puis utiliser First
comme
int value = int.Parse(Entity.TblGold
.OrderByDescending(p => p.Gram)
.Select(r => r.Gram)
.First().ToString());
Si la liste est correctement commandée pour saisir le dernier élément, je l'inverse simplement, puis je récupère le premier (précédemment dernier) élément:
var gram = int.Parse(Entity.TblGold.Reverse().First().Gram.ToString());
Vous ne pouvez pas le faire en une seule requête, mais vous pouvez le faire en deux.
var countOfRows = tbl.Count();
var lastRow = tbl.Skip(countOfRows - 1).FirstOrDefault();