Reputation: 157
I'm learning LINQ to Entities in C# .NET4.0 Winforms.
I have a MSSQL database table with over 2million rows, eventually more and I need to just pull back the first record or the last record in the database.
I tried getting the last record but it doesn't seem to want to work for me :( It builds okay, but during RunTime I get a
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.
I'm doing this...
using (DataFeedEntities db = new DataFeedEntities())
{
IntradayFuturesTick tick = db.IntradayFuturesTicks.Last();
}
I know it's probably an easy answer but I'm still getting my head around LINQ.
Thanks for your help.
David
Upvotes: 0
Views: 2565
Reputation: 4549
db.IntradayFuturesTicks.OrderByDescending(x => x.Id).FirstOrDefault();
Upvotes: 0
Reputation: 1157
You need to sort the results in descending order then use the Take extension method.
using (DataFeedEntities db = new DataFeedEntities())
{
IntradayFuturesTick tick = db.IntradayFuturesTicks
.OrderByDescending(x => x.Id)
.Take(1)
.Single();
}
You could also use First instead of Take, but I'm not sure if that will return only a single result in the database query.
Upvotes: 4