开发者

Dictionary of dates and values, finding value of max date per year in LINQ

Have a list like this:

01/01/2009, 120
04/01/2009, 121
30/12/2009, 520
01/01/2010, 100
04/01/2010, 101
31/12/2010, 540

I need to find the last value for each yea开发者_Python百科r, e.g. the result would be 520, 540?


var lastValues = records.OrderByDescending(r => r.Date)
                     .GroupBy(r => r.Date.Year)
                     .Select(g => g.First().Value);


class Program
{
    static void Main()
    {
        var list = new[]
        {
            new { Date = new DateTime(2009, 1, 1), Value = 120 },
            new { Date = new DateTime(2009, 4, 1), Value = 121 },
            new { Date = new DateTime(2009, 12, 30), Value = 520 },
            new { Date = new DateTime(2010, 1, 1), Value = 100 },
            new { Date = new DateTime(2009, 4, 1), Value = 101 },
            new { Date = new DateTime(2010, 12, 31), Value = 540 },
        };
        var result = list
            .GroupBy(x => x.Date.Year)
            .Select(g => new { Date = g.Key, MaxValue = g.Max(x => x.Value) });
        foreach (var item in result)
        {
            Console.WriteLine(item);
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜