3

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

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 上通过“直接事件”调用包含这些行的方法时返回以下错误:

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
4

1 回答 1

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)以供参考。

于 2013-03-05T08:55:59.240 回答