删除重复项并使用LINQ计算平均值
本文关键字:LINQ 计算 平均值 删除 | 更新日期: 2023-09-27 18:19:49
例如,我有一个对象列表(属性:名称和值)
- 第120项
- 第230项
- 项目150
我想要结果:
- 项目1 35(20+50)/2
- 项目2 30
我该怎么做?
抱歉,伙计们,重复是基于item.Name
。
var results =
from kvp in source
group kvp by kvp.Key.ToUpper() into g
select new
{
Key= g.Key,
Value= g.Average(kvp => kvp.Value)
}
或
var results = source.GroupBy(c=>c.Name)
.Select(c => new (c.Key, c.Average(d=>d.Value)));
您可以使用平均值和分组方式:
public class myObject
{
public string Name {get;set;}
public double Value {get;set;}
}
var testData = new List<myObject>() {
new myObject() { Name = "item1", Value = 20 },
new myObject() { Name = "item2", Value = 30 },
new myObject() { Name = "item1", Value = 50 }
};
var result = from x in testData
group x by x.Name into grp
select new myObject() {
Name=grp.Key,
Value= grp.Average(obj => obj.Value)
};