2 개의 문자열 속성과 몇 개의 이중 속성을 갖는 객체 목록을 갖습니다. 즉, 문자열 속성이 동일하다는 의미에서 중복 행이 있고, 이중 속성이 다릅니다. 이 중복을 하나의 새로운 행에 병합하려고합니다. 이중 행의 값에서 계산됩니다. 간단한 예 :목록의 항목 그룹을 새로운 계산 된 행으로 바꿉니다.
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)
};
}
}
:
1. A, Text1, 4 (5+3)/2
2. A, Text2, 4
3. B, Text1, 7
이것은 내가 지금 뭘하는지입니다 : 단순 평균으로 '계산 된 행을'촬영
1. A, Text1, 5
2. A, Text2, 4
3. B, Text1, 7
4. A, Text1, 3
, 내가 끝낼한다
잘 작동합니다. 그룹에 사용할 수있는 remove
메서드가 없으므로 반복되는 그룹의 행을 대체하는 방법을 모르겠습니다. 나는 원래 루프 비교를 위해 중첩 된 중첩 쿠페를 사용하여이 작업을 시도했지만 목록을 수정할 수 없기 때문에 일치하는 인덱스를 반복하여 저장했지만 그은 n * (n-1)/2 개의 일치 ...
나는 이것을하기에 완벽하게 간단한 방법이 빠져 있습니까? 나는 그것이 매우 어렵다고 믿을 수는 없지만, 나는 아직 그것을 해결하지 못했다.