2016-06-20 12 views
1

In meinem C# Programm, das ich jemand Eingangs Produktion für den ganzen Tag und ich berechnen Maschinennutzung (MU) wie folgt:Erstellen einer Pivot-Tabelle in C#

Date  | Part Number | Mold Num | Machine Num | MU 
2/12/2016 | 1185-5B8 | 6580 | 12   | .428    
2/12/2016 | 2249300  | 7797 | 36   | .271    
2/12/2016 | 146865  | 5096789 | 12   | .260    
2/16/2016 | 123456  | 7787 | 56   | .354    
2/16/2016 | 123456  | 787  | 54   | .45    
2/16/2016 | 123456  | 777  | 56   | .799    
2/16/2016 | 123456  | 87  | 54   | .611   

Alle diese Daten ist in meinem SQL Server und was ich machen möchte, ist etwas wie ein Pivot-Tisch zu machen und es nimmt alle ähnlichen Daten/Formnummern/Maschinennummern und macht einen Durchschnitt der MU und zeigt es in irgendeiner Weise an, die der Benutzer wünscht. Beispiel:

Date  | MU 
2/12/2016 | 32.0% 
2/16/2016 | 55.4% 

oder

Machine Num. | MU 
12  | 34.4% 
36  | 27.1% 
54  | 53.0% 
56  | 57.6% 

usw. Grundsätzlich möchte ich es variabel sein und unabhängig von der Person zu zeigen, dass der Suche auf die es braucht. Ich möchte es in meinem C# -Programm behalten, aber ich kann LINQ zu SQL verwenden. Bitte beachte, dass ich sehr neu in C# und LINQ to SQL bin.

Ich habe versucht, this tun, aber es war nicht genau das, was ich tun wollte. Ich konnte auch nicht herausfinden, wie ich es auf der Windows-Form anzeigen würde oder wie ich das ändern würde, was in jeder Spalte war.

+0

Was Sie beschreiben, klingt nicht wie ein Pivot-Tisch. Es klingt einfach so, als ob man nach etwas gruppieren und dann einen Durchschnitt machen möchte. Eine Pivot-Tabelle ändert Werte in einer Zelle in Spaltennamen. – juharr

+0

@juharr Ich benutzte eine Pivot-Tabelle, als ich es in Excel machte und war die einzige Möglichkeit, wie ich es beschreiben könnte – Carlos

Antwort

1

Es scheint, dass Sie Pivot-Tabelle mit Row-Dimension (Datum, Machine Num), ohne Spalte Dimension und mit Durchschnitt von MU erstellen müssen.

können Sie ganz einfach tun, dass mit Hilfe von NReco PivotData Bibliothek:

var pivotData = new PivotData(
    new string[] {"Date","Machine Num"}, 
    new AverageAggregatorFactory("MU"), 
    new DataTableReader(t)); // just a sample - you can use DB data reader 
var pivotTable = new PivotTable(
    new []{"Date"}, // row dimension(s) 
    new [0], // column dimension(s) 
    pivotData); 
// use pivotTable.RowKeys and indexer for accessing pivot table values 

PivotData Bibliothek kann kostenlos genutzt werden (Ich bin ein Autor), und Sie können Beispiele Paket auf der Komponente-Seite herunterladen. Sie können auch erweiterte PivotData Toolkit-Komponenten (zum Rendern von Pivot-Tabellen in HTML/CSV/Excel/PDF, Aggregieren von Daten auf DB-Ebene mit GROUP BY und vielen anderen) überprüfen, aber sie sind nicht kostenlos.

+0

Großartig, ich kannte dieses Tool nicht. Just FYI, das erste Beispiel auf Ihrer Seite (Online-C# Pivot-Tabelle Demo) scheint falsch zu sein - Zeilen = [Land, Jahr] und Spalten = [Produkte]. –

+0

@CetinBasoz hm gerade überprüft - es scheint richtig. Könnten Sie mich kontaktieren und erklären, warum es falsch ist? Vielleicht habe ich etwas Triviales verpasst ... –

+0

Zuerst sagt man "Zeilen = [Land], Spalten = [Jahr], Messen = [Verkaufszahl]". Pivotable zeigt jedoch "Zeilen = [Land, Jahr], Spalten = [Produkt]". –