2017-05-08 5 views
0

Ich habe eine DataTable mit mindestens 36000 Spalten, 20000 Zeilen min. Ich habe eine fest codierte Liste von Spaltennamen, die ich in der Datentabelle finden muss, und führe eine Berechnung der Werte für jede Spalte durch.Suche DataTable in C#

beispiele Summe aller Zeilen für eine bestimmte Spalte

ich die Spaltennamen zu finden, dachte eine einfache foreach der Verwendung und datatable.compute Methode meine Berechnung auszuführen.

Gibt es einen besseren Weg, dies zu erreichen? Jede Hilfe wird sehr geschätzt.

Vielen Dank.

Ich bin mit .Net 4.6 und VS2015

+10

36000 Spalten? Wow – InBetween

+0

Was genau machst du mit '36000' Spalten und' 20000' Reihen? –

+0

Ja, ein besserer Weg wäre, ein geeigneteres Speichermedium zu verwenden als eine extrem große DataTable. – Equalsk

Antwort

0

Für mehr Leistung seines guten parallele Methoden zu verwenden.

Dieser Link hat eine Probe für Sie parallel zu verwenden und es ist sehr gut, es überall dort zu verwenden, wo es möglich ist.

Bei this example sehen Sie, wie viel Ihre Geschwindigkeit verbessern wird.

+0

aber nicht vergessen für edite ui Parameter innerhalb parallel für oder parallel foreach müssen Sie verwenden aufrufen –

+0

haben Sie das versucht? –

0

Sie können den Leistungsunterschied zwischen Datatable.Compute und Foreach vergleichen.

// Datatable.Compute sample 
DataTable table; 
table = dataSet.Tables["Orders"]; 

// Declare an object variable. 
object sumObject; 
sumObject = table.Compute("Sum(Total)", "EmpID = 5"); 

Unten finden Sie eine Probe von foreach

// Foreach through DataTable 
double sum = 0; 
dt = ds.Tables["Orders"]; 
foreach (DataRow dr in dt.Rows) 
{ 
    sum += System.Convert.ToDouble(dr["Total"]); 
}