Gruppe durch eine Spalte, dann Fügen Sie jede Gruppe, um datatable dann in ein dataset
was wäre der beste Ansatz, um eine solche Sache?
so, hier ist meine Datatable
╔═══════════════╦═══════════════╦═══════════════╗
║ Product Name ║ Product Price ║ Product Group ║
╠═══════════════╬═══════════════╬═══════════════╣
║ Skirt Red ║ 99 ║ 1 ║
║ Jeans Blue ║ 49 ║ 2 ║
║ Jeans Black ║ 49 ║ 2 ║
║ Skirt Blue ║ 99 ║ 1 ║
║ T-shirt White ║ 20 ║ 3 ║
║ T-shirt Green ║ 20 ║ 3 ║
║ Jeans Grey ║ 49 ║ 2 ║
╚═══════════════╩═══════════════╩═══════════════╝
werde ich der Gruppe diese datatable durch die Produkt-Gruppen-Spalte mithilfe von LINQ zu erzeugen, die folgenden Gruppen
Group #1
╔═══════════════╦═══════════════╦
║ Product Name ║ Product Price ║
╠═══════════════╬═══════════════╬
║ Skirt Red ║ 99 ║
║ Skirt Blue ║ 99 ║
╚═══════════════╩═══════════════╩
Group #2
╔═══════════════╦═══════════════╦
║ Product Name ║ Product Price ║
╠═══════════════╬═══════════════╬
║ Jeans Blue ║ 49 ║
║ Jeans Black ║ 49 ║
║ Jeans Grey ║ 49 ║
╚═══════════════╩═══════════════╩
Group #3
╔═══════════════╦═══════════════╦
║ Product Name ║ Product Price ║
╠═══════════════╬═══════════════╬
║ T-Shirt White ║ 20 ║
║ T-Shirt Green ║ 20 ║
╚═══════════════╩═══════════════╩
nun die Fragen sind
- wie kann ich group by Artikelgruppe Spalte mithilfe von LINQ (Fertig)
- wie Entferne ich die Produkt-Spalte Gruppe aus der Gruppe gebracht?
- wie füge ich jede Gruppe auf einer separaten Datentabelle und fügen Sie dann alle
Tabellen zu einzelnen Datensatz?(Fertig) - nehme an, es gab Spalten, die ich nicht wollen, um zu zeigen, in der geführt
Gruppe, wie kann ich das verstecken?
hier ist, was ich bisher ausprobiert habe
Dim ds As New DataSet
Dim query = From r In bookedorders Group By key = r.Field(Of Integer)("productgroup") Into Group
For Each grp In query
Dim x As New DataTable
x = grp.Group.CopyToDataTable()
ds.Tables.Add(x)
Next
nun funktionieren, außer ich bin nicht sicher, wie Sie Sie wählen bestimmte Spalten, wie ich nicht wollen, um alle Spalten in den entstandenen Datentabellen
nur fügte hinzu, dass die Frage
InformationsquelleAutor user1570048 | 2012-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
1.wie kann ich group by Artikelgruppe Spalte mithilfe von LINQ
Es klingt wie das, was Sie fordern ist nicht technisch als eine Gruppe in LINQ. Gruppieren in linq-bedeutet, du nimmst die Werte aus einer Spalte und die Kombination von Ihnen in irgendeiner Weise(SUMME, Durchschnitt) und die Anzeige einen Datensatz pro einige eindeutige Kennung. In deinem Beispiel, wenn Sie wollten, um zu zeigen, dass der Durchschnittliche Preis pro Gruppe dann erfordern würde, dass eine Gruppe, aber aus deiner Erklärung, wie es aussieht, müssen nur 3 verschiedene select-Anweisungen, die würde wie folgt Aussehen:
From r in products where r.groupID = YourControlVariable select r.ProductName, r.ProductPrice
Wo YourControlVariable wäre jede Gruppen-ID. Diese LINQ würde Ihnen die drei Tabellen, die Sie umrissen und Sie von dort aufrufen konnte
CopyToDataTable
Funktion auf, was die LINQ zurück und legen Sie ein temporäres datatable-das entspricht der Leistung von dieser Funktion.2.wie Entferne ich die Produkt-Spalte Gruppe aus der Gruppe gebracht?
Beziehen sich auf die linq aus Punkt 1 durch, wobei nur die Spalten, die Sie wollen auswählen, Sie wird im wesentlichen ignorieren Sie die Spalten, die nicht aufgeführt sind.
3.wie füge ich jede Gruppe auf einer separaten Datentabelle und fügen Sie alle Tabellen, um einzelne Datensatz?
Wäre dies relativ einfach zu bewerkstelligen in einer Schleife, wenn Sie wissen, die Gruppen-id ist, die Sie verwenden werden. Sie können erstellen Sie ein temporäres datatable in einer Schleife und legen Sie es auf enthalten die Ergebnisse der linq aus Punkt 1. haben Sie erst einmal die Ergebnisse können Sie dann Namen und fügen Sie die Tabelle in ein dataset und sobald der loop fertig ist Ihre temporäre Datentabellen wird verschwunden sein, aber Sie werden in der Lage sein, auf Sie verweisen, indem Sie den Namen in das dataset selbst.
4.angenommen, es waren Spalten, die ich nicht wollen, um zu zeigen, in die Gruppe gebracht, wie kann ich das verstecken?
Siehe Punkt 1/2.
Edit:
Wie Sie beschrieben haben das problem, das ich denke, mit einer Gruppe von in der LINQ macht es unnötig kompliziert, dass man sich mit anonymen Typen, wenn Sie wollen, ziehen Sie einzelne Eigenschaften. Hier ein kurzes snippet, bekommt alle verschiedenen Gruppen-ids verwendet dann LINQ to ziehen Sie alle Produkte, die von jeder Art, addsd diese in eine Tabelle und fügt dann die benannte Tabelle zu dem Datensatz. Sie können entfernen Sie die name-Teil oder es zu ändern, was Sie wollen, es spielt eigentlich keine Rolle.
Ich geändert habe dein Beispiel ein bisschen, verwenden Sie die Artikel-Sammlung, aber das wird nur funktionieren, wenn
bookedorders
ist eine datatable.Edit #2:
Denken, nachdem es für etwas, das obige Beispiel wird immer noch geben Ihnen eine Auflistung mit anonymen Typen als Ergebnis. So, um zu bekommen, dass Sie sich ändern könnte, das
Zeile so Aussehen:
und dann innerhalb deiner if-Anweisung wie folgt Aussehen:
Wieder wird dies nur funktionieren, wenn Sie LINQing, die durch ein datatable-und immer eine
Enumerable(Of DataRow)
als dein Ergebnis, welches vorzuziehen ist.Ich habe ein Beispiel von code, die, glaube ich acomplish, was Sie suchen, ist dies eine ziemlich Runde über Art und Weise, es zu tun, wenn im Vergleich zu Wasp Antwort, aber dies erfordert nicht die Verwendung von anonymen Typen, so dass Sie verwenden können, die
CopyToDataTable
Methode.Noch ein edit Hinzugefügt, weil mir bewusst meine Arbeit, um für die Vermeidung von anonymen Typen nicht funktionieren würde, wie es Stand bevor.
aber ich löste dies durch die Schaffung einer anderen Tabelle enthält nur die Spalten, die ich will, dann verwendet es, vielen Dank
InformationsquelleAutor Mike_OBrien
Bin ich nicht gewohnt VB.NET syntax, es sollte so etwas wie dieses (ich nicht garantieren 100%, dass code tatsächlich kompiliert):
Für weitere Prüfungen können Sie sehen, dieses:
http://msdn.microsoft.com/en-us/vstudio/bb737908
insbesondere die GroupBy - Verschachtelte Beispiel, wo Sie sehen können, wie können Sie das Projekt in einer Gruppe.
Wenn Sie arbeiten Sie es aus und finden Sie einige Kompilierungs-Fehler in meiner Antwort lassen Sie mich wissen, was und ich werde es beheben.
copytodatatable
InformationsquelleAutor Wasp