我有一个对象列表,每个对象有两个字符串属性和几个双重属性 - 在字符串属性相同的意义上有重复的行,而双属性是不同的。我试图将这些重复项合并成一个新的行,它是根据双重属性的值计算出来的。简单的例子:用新的计算行替换列表中的项目组
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
。我原本试图用一个循环比较嵌套的coupe来做到这一点,但由于我无法修改列表,我正在遍历我存储的匹配索引,但意味着我有n *(n-1)/ 2个匹配...
我错过了一个非常简单的方法来做到这一点?我不敢相信这很困难,但我还没有能够解决这个问题。