LinQ:返回每个不同的其他元素的最后一个或更高的值

时间:2016-12-07 03:10:32

标签: linq

我说我的数据库中有这个表

Region | ApplicationDate | Value
-------|-----------------|------
US     | 2016-12-01      | 14
UK     | 2016-12-01      | 20
US     | 2016-11-15      | 12
UK     | 2016-10-01      | 25
AU     | 2016-09-01      | 150
AU     | 2016-08-01      | 100
US     | 2016-08-01      | 11
US     | 2016-02-01      | 10
UK     | 2016-01-01      | 30

什么是将返回每个区域的最后一个值的查询(LinQ)

US     | 2016-12-01      | 14
UK     | 2016-12-01      | 20
AU     | 2016-09-01      | 150

1 个答案:

答案 0 :(得分:1)

当您需要每个类别中的最后一项时,制作LINQ查询的策略如下:

  • 按类别分组 - 在您的情况下,Region
  • 在每个组内排序 - 您需要按日期排序,降序
  • 选择您需要的项目 - 在First内使用Select

查询如下:

var res = data
    .GroupBy(item => item.Region)
    .ToDictionary(
        g => g.Key
    ,   g => g.OrderByDescending(item => item.Applicationdate).First().Value
    );