linq选择最后一条记录失败,“方法无法识别”

时间:2013-03-05 08:53:13

标签: linq linq-to-entities

我有以下查询来选择数据库中的最后一条记录

using (Entities ent = new Entities())
{
Loaction last = (from x in ent.Locations select x).Last();
Location add = new Location();
add.id = last.id+1;
//some more stuff
}

通过ext.net上的“Direct event”调用包含这些行的方法时返回以下错误:

LINQ to Entities does not recognize the method 'Prototype.DataAccess.Location Last[Location]
(System.Linq.IQueryable`1[Prototype.DataAccess.Location])' method,
and this method cannot be translated into a store expression.

表结构如下:

int ident IDENTITY NOT NULL,
int id NOT NULL,
varchar(50) name NULL,
//some other varchar fields

1 个答案:

答案 0 :(得分:13)

Linq to Entities不支持Last。执行OrderByDescending(通常按ID或某个日期列)并先选择。类似的东西:

Location last = (from l in ent.Locations
                 orderby l.ID descending
                 select l).First();

或者

Location last = ent.Locations.OrderByDescending(l => l.ID).First();

请参阅MSDN文章Supported and Unsupported LINQ Methods (LINQ to Entities)以供参考。