發現每年最大日值有一個這樣的名單:詞典日期和價值觀,在LINQ
01/01/2009, 120
04/01/2009, 121
30/12/2009, 520
01/01/2010, 100
04/01/2010, 101
31/12/2010, 540
我需要找到每一年,如最後一個值結果會是520,540?
發現每年最大日值有一個這樣的名單:詞典日期和價值觀,在LINQ
01/01/2009, 120
04/01/2009, 121
30/12/2009, 520
01/01/2010, 100
04/01/2010, 101
31/12/2010, 540
我需要找到每一年,如最後一個值結果會是520,540?
var lastValues = records.OrderByDescending(r => r.Date)
.GroupBy(r => r.Date.Year)
.Select(g => g.First().Value);
當然。選擇(g => g.Last()。Value); ? –
@Andrew我們不知道最初的順序,所以需要對它進行排序,所以'Order()'帶有'OrderByDescending()'或'Last()'的First()'應該可以工作。 –
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);
}
}
}
這是每年的最大值(也很有用!),我只想要每年的最後一個值。 –
如何名單中的代碼構建? – Variant