17

我想从最后一条记录中获取名为“Gram”的字段的值并将其值放入变量中,而不使用任何条件。

首先我试过

int value = int.Parse(Entity.TblGold.LastOrDefault().Gram.ToString());

第二个我试过

int value = int.Parse(Entity.TblGold.Select(p => p.Gram).Last().ToString());

我刚收到这个例外:

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.

4

4 回答 4

42

Last or LastOrDefault are not supported in LINQ to Entities. You can either iterate your query using ToList or ToArray and then apply Last or you can order by descending and then use the First like:

int value = int.Parse(Entity.TblGold
                            .OrderByDescending(p => p.Gram)
                            .Select(r => r.Gram)
                            .First().ToString());
于 2013-10-01T16:52:43.210 回答
0

您不能在一个查询中完成,但您可以在两个查询中完成。

var countOfRows = tbl.Count();

var lastRow = tbl.Skip(countOfRows - 1).FirstOrDefault();
于 2013-10-01T16:54:54.987 回答
0

如果您有增量 ID:

int idx = tb.Max(i => i.Id);
var row = tb.FirstOrDefault(i => i.Id == idx);
于 2021-11-23T14:31:14.783 回答
-1

您可以使用 order by 1 == 1 并且它有效

var countOfRows = tbl.Count();    
var lastRow = tbl.OrderBy(c => 1 == 1).Skip(countOfRows - 1).FirstOrDefault();
于 2015-10-28T07:54:50.580 回答