2012-10-25 13 views
5

Ich bin in der Lage, die Duplikate aus DataTable Zeilen zu finden. Wie folgt:Suchen Sie doppelte und zusammenführen Datensatz in einzelne Datentabelle C#

Jetzt möchte ich alle doppelten Datensätze in einzelne zusammenführen und summieren Wert Spalte Wert.

Ziemlich viel wie folgt vor:

Datentabelle mit Dubletten:

Version Value 
1 2 

2 2 

2 1 

1 3 

2 1 

3 2 

Datentabelle ohne Duplikate und Wert summiert .:

Version Value 
1 5 

2 4 

3 2 

Ich bin mir bewusst, über diesen Link, die dies tut mit die Hilfe der Reflexion. http://forums.asp.net/t/1570562.aspx/1

Irgendein anderer Weg, es zu tun?

Edit: Allerdings, wenn ich mehr als zwei Spalten habe, wie fünf Spalten und ich möchte immer noch die Summe auf Wert Spalte und benötigen auch andere Spalten Daten in Resulanten summiert Datentabelle. Wie es geht? Hier bekomme ich die Version und den Wert in meinem Ergebnis DataTable. Ich möchte auch andere Spalten mit Werten. Wie folgt vor:

Version col1 col2 Wert

1 A A 2 

2 B B 2 

2 B B 1 

1 A A 3 

2 B B 1 

3 C C 2 

Antwort

6
var result = table.AsEnumerable() 
      .GroupBy(r => r.Field<string>("Version")) 
      .Select(g => 
       { 
        var row = table.NewRow(); 
        row.ItemArray = new object[] 
         { 
          g.Key, 
          g.Sum(r => r.Field<int>("Value")) 
         }; 
        return row; 
       }).CopyToDataTable(); 

Edit:

Wenn Sie andere Feld halten wollen, versuchen Sie unter:

var result = table.AsEnumerable() 
      .GroupBy(r => new 
       { 
        Version = r.Field<String>("Version"), 
        Col1 = r.Field<String>("Col1"), 
        Col2 = r.Field<String>("Col2") 
       }) 
      .Select(g => 
       { 
        var row = g.First(); 
        row.SetField("Value", g.Sum(r => r.Field<int>("Value"))); 
        return row; 
       }).CopyToDataTable(); 
+0

should't es sei 'g.Sum (x => x.Value)' anstatt 'g.Count'? – Spontifixus

+0

@ Spontifixus: Sie haben Recht, bearbeitet –

+0

Right @ Spontifixus. Ich habe das geändert und es funktioniert. Wenn ich jedoch mehr als zwei Spalten habe, wie fünf Spalten, möchte ich immer noch die Summe in der Spalte Wert eingeben und benötige auch andere Spalten in der resultierenden summierten Datentabelle. Wie es geht? Hier bekomme ich die Version und den Wert in meinem Ergebnis DataTable. Ich möchte auch andere Spalten mit Werten. –

Verwandte Themen