我正在学习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。
感谢您的帮助。
大卫
答案 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();