オブジェクトのリストを返す次のコードがあります。
var listOfLogins = _logService.GetLogEventsByItemID(137).ToList();
このリストの最後から 2 番目のオブジェクトを取得したいと思います。
Linq to Entities を使用してこれを行う方法を知っている人はいますか?
ありがとう。
オブジェクトのリストを返す次のコードがあります。
var listOfLogins = _logService.GetLogEventsByItemID(137).ToList();
このリストの最後から 2 番目のオブジェクトを取得したいと思います。
Linq to Entities を使用してこれを行う方法を知っている人はいますか?
ありがとう。
var secondlast = _logService.GetLogEventsByItemID(137)
.Reverse()
.Skip(1)
.Take(1)
.FirstOrDefault();
更新
@Dherik は、.Reverse
LINQ to Entities で実際にサポートされていないコメントで適切な点を指摘しており、 を呼び出す時点ではなく、reverse を呼び出す時点でクエリが評価されることになります.FirstOrDefault
。サポートされているすべての (サポートされていない) メソッドについては、こちらを参照してください。
別の (LINQ to Entities に適した) ソリューションでは、順序付けに適したフィールドが必要です (そうでなければ、「最後から 2 番目」は関連性がありません)。
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
このような?