Linq для сущностей получает первый или последний из 2 миллионов строк - PullRequest
0 голосов
/ 07 августа 2011

Я изучаю LINQ для сущностей в C # .NET4.0 Winforms.

У меня есть таблица базы данных MSSQL с более чем 2 миллионами строк, в конечном итоге больше, и мне нужно просто извлечь первую запись или последнюю запись в базе данных.

Я пытался получить последнюю запись, но она, похоже, не работает для меня :( Она хорошо собирается, но во время 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.

Спасибо за вашу помощь.

David

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

Вам нужно отсортировать результаты в порядке убывания, а затем использовать метод расширения Take.

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

Вы также можете использовать First вместо Take, но я не уверен, что это даст только один результат в запросе базы данных.

0 голосов
/ 04 января 2013
db.IntradayFuturesTicks.OrderByDescending(x => x.Id).FirstOrDefault();
...