gpt4 book ai didi

c# - LINQ:根据最大值从对象列表中进行分组和选择

转载 作者:太空狗 更新时间:2023-10-29 21:06:13 24 4
gpt4 key购买 nike

我的 MyItem 类具有如下 3 个属性:

class MyItem
{
private string _name;
private int _value
private DateTime _TimeStamp;

public MyItem(string name, int value, string timeStamp)
{
this._name = name;
this._value = value;
this._timeStamp = DateTime.Parse(timeStamp);
}

public string Name
{ get {return this_name; } }

public int Value
{ get {return this._value; } }

public DateTime TimeStamp
{ get {return this._timeStamp; } }

// ...
}

我还有一个 MyItem 列表如下:

var myItems = new List<MyItem>() {
new MyItem("A", 123, "23/02/2012"),
new MyItem("A", 323, "22/02/2012"),
new MyItem("B", 432, "23/02/2012"),
new MyItem("B", 356, "22/02/2012"),
// ...
}

如何按 myList 进行 GROUP BY 以便只剩下具有最大时间戳的项目?即下面的结果:

"A"  123  23/02/2012<br>

"B" 432 23/02/2012<br>

提前致谢。

最佳答案

myItems.GroupBy(item => item.Name)
.Select(grp => grp.Aggregate((max, cur) =>
(max == null || cur.Date > max.Date) ? cur : max))

这将在尽可能快的时间内(至少我能想到的)选择您的结果,而无需创建新对象并以最少的次数迭代集合。

关于c# - LINQ:根据最大值从对象列表中进行分组和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com