我有以下代碼返回對象列表。Linq To Entities獲取第二個最後一個條目列表
var listOfLogins = _logService.GetLogEventsByItemID(137).ToList();
我想得到列表中的第二個對象。
有誰知道如何做到這一點使用Linq實體?
謝謝。
我有以下代碼返回對象列表。Linq To Entities獲取第二個最後一個條目列表
var listOfLogins = _logService.GetLogEventsByItemID(137).ToList();
我想得到列表中的第二個對象。
有誰知道如何做到這一點使用Linq實體?
謝謝。
var secondlast = _logService.GetLogEventsByItemID(137)
.Reverse()
.Skip(1)
.Take(1)
.FirstOrDefault();
更新
@Dherik使得該.Reverse
實際上不支持LINQ到實體,並會導致查詢中調用反向,而不是在點被評估在他的評論好點撥打電話.FirstOrDefault
。所有(不)支持的方法均爲See here。
替代(LINQ到實體友好)的解決方案,您需要有一個合適的領域通過訂購(必須是這樣反正否則「倒數第二」沒有相關性):
var secondlast = _logService.GetLogEventsByItemID(137)
.OrderByDescending(e => e.EventDate /* could be any db field */)
.Skip(1)
.Take(1)
.FirstOrDefault();
int[] items = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int item = items.Skip(items.Count() - 2).Take(1).Single();
//will return 9
喜歡這個?
Carlos Brazao是的,那是另一種方式。謝謝。 – tgriffiths 2012-07-24 14:38:55
@Luiz。這將工作,但會對數據庫進行兩次調用。一個做數量,另一個返回結果。 – 2012-07-24 14:41:49
謝謝你。 – tgriffiths 2012-07-24 14:25:19
LINQ to Entities是否識別方法「Reverse()」? – Dherik 2015-02-26 18:37:29
@Dherik。好點,雖然我希望你在兩年前看到這個!我更新了我的答案以提供更合適的解決方案。 – 2015-03-05 15:38:34