使用LINQ从由另一个属性分组的列表中删除除最高值以外的所有值
本文关键字:最高值 删除 列表 LINQ 另一个 属性 使用 | 更新日期: 2023-09-27 18:19:03
我有两个类,看起来像这样(简化为SO):
public class Result
{
List<Review> Reviews { get; set; }
}
public class Review
{
public string Name { get; set; }
public string Amount { get; set; }
}
所以最终的结果是我们有一个"result"对象,它有一个List<>的Review对象,每个对象都有一个名称和一个数量。"Name"属性可以在此列表中重复一次或多次。
给定一个"Reviews"属性,它有几个具有重复名称的Review对象,我想使用LINQ从具有最低值的列表中删除具有重复名称的"Review"对象(换句话说,我想从列表中删除除具有最高值的对象外的所有Review对象)。
如果我的列表是这样的:
Name Amount
----------------
A 2
B 3
C 1
A 1
B 4
我想在我的列表中使用LINQ Remove
函数,以便我的最终结果是:
Name Amount
----------------
A 2
C 1
B 4
关于如何使用LINQ做到这一点有什么建议吗?我也在寻找自己的解决方案,只是想在这里发帖看看是否比我自己解决更快。:)
你可以这样做:
var endResult = reviewList.OrderByDescending(e => e.Amount)
.GroupBy(e => e.Name)
.Select(g => g.First());