6

日付のリストがあります。リストを照会して、最初の項目が日付で、2番目の項目が(リスト内の)最初の日付の直前の日付であるペアのリストを返したいと思います。

これは、リストを並べ替えてそれぞれの日付をインデックスで取得することで簡単に実現できることを知っています。LINQでこれをどのように実現できるのか興味があります。

次のクエリを使用してSQLでこれを実行しました。

SELECT Date, 
    (SELECT MAX(Date)
    FROM Table AS t2
    WHERE t2.Date < t1.Date) AS PrevDate
FROM Table AS t1
4

2 に答える 2

5

現在のクエリをクエリに変換するのは簡単LINQです。

var result = table.Select(x =>
    new
    {
        Date = x.Date,
        PrevDate = table.Where(y => y.Date < x.Date)
                        .Select(y => y.Date)
                        .Max()
    });
于 2013-02-14T17:53:06.623 に答える
2
List<DateTime> dates = new List<DateTime>()
{
    DateTime.Now.AddDays(1),
    DateTime.Now.AddDays(7),
    DateTime.Now.AddDays(3),
    DateTime.Now.AddDays(6),
    DateTime.Now.AddDays(5),
    DateTime.Now.AddDays(2),
    DateTime.Now.AddDays(3),
};

dates = dates.OrderByDescending(x => x).ToList();
var result = dates.Skip(1)
    .Select((x, i) => new { Date = dates[i], PreviousDate = x });
于 2013-02-14T17:52:19.273 に答える