Linq to实体从200万行中获得第一个或最后一个

时间:2011-08-07 16:12:50

标签: c#-4.0 lambda linq-to-entities

我正在学习C#.NET4.0 Winforms中的LINQ to Entities。

我有一个超过200万行的MSSQL数据库表,最终更多,我需要拉回数据库中的第一条记录或最后一条记录。

我尝试获取最后一条记录,但它似乎并不想为我工作:(它构建正常,但在RunTime期间我得到了

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

我这样做......

using (DataFeedEntities db = new DataFeedEntities())
{
   IntradayFuturesTick tick = db.IntradayFuturesTicks.Last();
}

我知道这可能是一个简单的答案,但我仍然围绕着LINQ。

感谢您的帮助。

大卫

2 个答案:

答案 0 :(得分:4)

您需要按降序对结果进行排序,然后使用Take extension方法。

using (DataFeedEntities db = new DataFeedEntities())
{
    IntradayFuturesTick tick = db.IntradayFuturesTicks
       .OrderByDescending(x => x.Id)
       .Take(1)
       .Single();
}

您也可以使用First而不是Take,但我不确定这是否只会在数据库查询中返回一个结果。

答案 1 :(得分:0)

db.IntradayFuturesTicks.OrderByDescending(x => x.Id).FirstOrDefault();