我有这样的清单:
var raw = new[] { new { Title = "Sergio", Date= "18-12-2021"},
new { Title = "Sergio", Date= "18-10-2021"},
new { Title = "Sergio", Date= "18-11-2021"},
new { Title = "Jose", Date= "19-12-2021"},
new { Title = "Jose", Date= "18-12-2021"},
new { Title = "Jose", Date= "17-12-2021"},
new { Title = "Marco", Date= "16-12-2021"}
};
我想要一个包含每个“标题”的最后注册日期的列表。例如,这将是输出:
raw = {{ Title = "Sergio", Date= "18-12-2021"},
{ Title = "Jose", Date= "19-12-2021"},
{ Title = "Marco", Date= "16-12-2021"}
}
我尝试使用groupBy,但不起作用
3条答案
按热度按时间qojgxg4l1#
您可以使用日期查找最后一个标题,如下所示:
但是,您的数据模型将Date作为字符串,使用的格式不能正确排序。
要使此代码正常工作,您可以选择:
数据转换替代方案:
请注意,由于您的时间分辨率是以天为单位,因此所选标题在共享同一时间戳的所有记录中是不确定的。
如果您希望获得这样一个组中所有标题的列表(请注意,这与日期排序存在相同的问题):
dy2hfwbg2#
您仍然可以使用GroupBy方法。它将返回IGrouping对象的枚举,该对象也可以被迭代。您需要按Title对数组进行分组,然后按Date对每个组对象按降序排序。
输出量:
ss2ws0br3#
这是一个有点冗长的答案,但在这里我创建了一个类,并使用它来解析,然后使用一个列表,我然后排序和分组位。
请在此处查看运行情况:https://dotnetfiddle.net/Lm12pX
这将生成以下输出:
编码: