C# 用新的计算行替换列表中的项目组

C# 用新的计算行替换列表中的项目组,c#,grouping,duplicate-removal,C#,Grouping,Duplicate Removal,我有一个对象列表,每个对象有两个字符串属性和几个双属性-有重复的行,因为字符串属性相同,而双属性不同。我试图将这些重复项合并到一个新行中,该新行是根据双属性的值计算的。简化示例: 1. A, Text1, 5 2. A, Text2, 4 3. B, Text1, 7 4. A, Text1, 3 将“计算行”作为一个简单的平均值,我应该得到: 1. A, Text1, 4 (5+3)/2 2. A, Text2, 4 3. B, Text1, 7 这就是我目前正在做的: var group

我有一个对象列表,每个对象有两个字符串属性和几个双属性-有重复的行,因为字符串属性相同,而双属性不同。我试图将这些重复项合并到一个新行中,该新行是根据双属性的值计算的。简化示例:

1. A, Text1, 5
2. A, Text2, 4
3. B, Text1, 7
4. A, Text1, 3
将“计算行”作为一个简单的平均值,我应该得到:

1. A, Text1, 4 (5+3)/2
2. A, Text2, 4
3. B, Text1, 7
这就是我目前正在做的:

var groups = (from t in MyList group t by new { t.Field1, t.Field2});
foreach (var @group in groups)
{
   if (@group.Count() > 1)
   {         
      var newRow = new MyObject
                       {
                          Field1 = @group.ElementAt(0).Field1,
                          Field2 = @group.ElementAt(0).Field2,
                          Field3 = @group.Average(i => i.Field3)
                       };                        
   }
}
这很好用。我只是不知道如何替换我正在迭代的组中的行,因为没有可用于组的
remove
方法。我最初尝试通过一系列嵌套for循环比较来实现这一点,但由于我无法修改正在迭代的列表,我存储了匹配的索引,但这意味着我有n*(n-1)/2个匹配项


我是否错过了一个非常简单的方法?我不敢相信这很难,但我还没能解决它。

回答我自己的问题,而不是删除它,因为它可能对有类似大脑障碍的人有用:

我把事情搞得太复杂了——我只是创建并返回了一个包含新行+不需要处理的行的新列表

var groups = (from t in MyList group t by new { t.Field1, t.Field2 });
var returnList = new List<MyObject>();
foreach (var @group in groups)
{ 
   returnList.Add(new TradeScore
                      {
                         Field1 = @group.ElementAt(0).Field1,
                         Field2 = @group.ElementAt(0).Field2,
                         Field3 = @group.Average(i => i.Field3)
                      });
}
return returnList;
var groups=(从MyList组t中的t开始,按新的{t.Field1,t.Field2});
var returnList=新列表();
foreach(组中的var@group)
{ 
返回列表。添加(新的TradeScore
{
Field1=@group.ElementAt(0.Field1),
Field2=@group.ElementAt(0.Field2),
Field3=@group.Average(i=>i.Field3)
});
}
退货清单;
简单

注意:这会对所有组进行处理,即使只有一个项目的组也是如此。虽然它们不需要处理,但一个值的平均值显然就是该值,并且它避免了额外的
if(…){process and add}else{add}
。我怀疑开销会很明显,但这是需要注意的