我有一个对象列表,每个对象有 2 个字符串属性和几个双属性 - 从字符串属性相同的意义上讲,存在重复的行,而双属性不同。我正在尝试将这些重复项合并到一个新行中,该行是根据双属性的值计算的。简化示例:
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 个匹配项...
我是否错过了一种非常简单的方法来做到这一点?我不敢相信这非常困难,但我还没有能够解决它。