2011-08-07 37 views
0

我正在學習C#.NET4.0 Winforms中的LINQ to Entities。Linq到實體從200萬行獲得第一個或最後一個

我有過200萬行,最終更多的是MSSQL數據庫表,我只是需要拉回來的第一個記錄或數據庫中的最後一條記錄。

我試圖獲得最後一個記錄,但它似乎並不想爲我工作:(它建立好了,但在運行時我得到一個

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。

感謝您的幫助。

大衛

回答

4

你需要按降序排列,然後用取擴展方法對結果進行排序。

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

您也可以使用First而不是Take,但是我不確定這是否只會返回數據庫查詢中的單個結果。

+0

查爾斯後,這是完美的,它的工作就像一個魅力,我很擔心如果我不得不加載200萬行來重新排序等等,我花了很長時間...但是我意識到它並沒有實際加載它,它只是發送MS SQL所需的特定TSQL:D謝謝! – DeveloperDavid

0

是採取將返回只有一個實例,但我認爲這將在另一個容器中存在,那麼我們使用的是單一的方法取方法

相關問題