2つの文字列属性と2つの2つの属性を持つオブジェクトのリストがあります - 文字列属性が同じであるという意味で重複行があり、属性は異なります。これらの重複を、double属性の値から計算される1つの新しい行にマージしようとしています。簡単な例:リストのアイテムのグループを新しい計算された行に置き換えます
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)
};
}
}
これはうまくいきます。グループに対して利用可能なメソッドがないため、繰り返し処理しているグループの行を置き換える方法がわかりません。私はもともとループ比較のネストでクーペでこれをしようとしましたが、リストを変更できなかったので、一致するインデックスを繰り返し保存しましたが、そのはn *(n-1)/ 2つの一致...
私はこれを行うには完全に簡単な方法がありませんか?私はそれが非常に難しいとは信じられませんが、私はまだそれを解決することができませんでした。