我有几个看起来像这样的类(简化为SO):
public class Result
{
List<Review> Reviews { get; set; }
}
public class Review
{
public string Name { get; set; }
public string Amount { get; set; }
}
所以最终的结果是我们有一个&#34;结果&#34;具有List&lt;&gt;的对象Review对象,每个对象都有一个名称和一个数量。 &#34;姓名&#34;属性可以在此列表中重复一次或多次。
鉴于&#34;评论&#34;具有多个具有重复名称的Review对象的属性,我想使用LINQ删除&#34; Review&#34;列表中具有重复名称的对象具有最低值(换句话说,我想从列表中删除所有Review对象除了具有最高值的对象)。
所以,如果我的列表如下:
Name Amount
----------------
A 2
B 3
C 1
A 1
B 4
我想在列表中使用LINQ Remove
函数,以便我的最终结果是:
Name Amount
----------------
A 2
C 1
B 4
有关如何使用LINQ执行此操作的任何建议?我也在寻找自己的解决方案,我想在这里发帖,看看它是否比我自己搞清楚要快。 :)
答案 0 :(得分:4)
这是一种可以做到的方法:
var endResult = reviewList.OrderByDescending(e => e.Amount)
.GroupBy(e => e.Name)
.Select(g => g.First());