Benutzer mit den meisten Antworten
LinQ: DataTable aus Join-Query erstellen

Frage
-
Hallo, tüftle schon wieder etwas länger an einer Abfrage. Ich möchte das Ergebnis gleich als DataTabel wandeln (konvertieren). Wei kann ich das am besten und schnellsten machen?
var query = from m in MovexScheibeTbl.AsEnumerable() join t in tbl.AsEnumerable() on m.Field<string>("Artikelnr") equals t.Field<string>("Systemcode") //on m["Artikelnr"] equals t["Systemcode"] select new { AuftragsnummerMovex = m.Field<string>("Artikelnr"), Systemcode = t.Field<string>("Systemcode"), Kantenradius = t["S1"], Breite = t["S2"], Scheibennummer = t["S3"], Kordel = t["Typ"] }; //// Das geht nicht, obwhl in einem Forum gezeigt DataTable table = new DataTable(); tbl = query.CopyToDataTable();
Ich habe schon probiert, die query in einer foreach abzuarbeiten und die Rows zu erfassen, aber ich bekomme das nicht hin. Kann mir da jemand helfen?- Typ geändert Robert BreitenhoferModerator Mittwoch, 21. März 2012 10:42 Frage
Antworten
-
Hallo,
bei CopyToDataTable findet sich der kleine Hinweis, dass es nur für DataRow Instanzen funktioniert,
weitere Erläuterungen zu den Ursachen der Einschränkung: Science ProjectSomit muss man schon etwas mehr tun um daraus wieder eine DataTable zu erzeugen.
Einige Varianten dazu hatte ich mal gezeigt in:LINQ CopytoDataTable
Das Beispiel ist zwar in VB sollte aber (da fast nur LINQ) für C#'ler verständlich sein.Da Du oben nur die Artikelnummer ergänzt, könntest Du auch t (oder eine Kopie davon)
um die eine Spalte ergänzen und die Daten über eine "konventionelle" Schleife übertragen.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 21. März 2012 10:43
-
Hallo, habe das Problem erledigt. Habe es nun so gemacht wie immer, zwei querys, jedesmal die gesamte Ergebnismenge geholt, die Daten in je ein Tabelle kopiert, in einer Schleife die gemeinsame Tabelle der beiden Tabellen generiert und dann die DataRows der beiden Abfragetabellen über eine SChleife in die vereinte Tabelle eingelagert.
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 21. März 2012 10:43
Alle Antworten
-
Hallo,
bei CopyToDataTable findet sich der kleine Hinweis, dass es nur für DataRow Instanzen funktioniert,
weitere Erläuterungen zu den Ursachen der Einschränkung: Science ProjectSomit muss man schon etwas mehr tun um daraus wieder eine DataTable zu erzeugen.
Einige Varianten dazu hatte ich mal gezeigt in:LINQ CopytoDataTable
Das Beispiel ist zwar in VB sollte aber (da fast nur LINQ) für C#'ler verständlich sein.Da Du oben nur die Artikelnummer ergänzt, könntest Du auch t (oder eine Kopie davon)
um die eine Spalte ergänzen und die Daten über eine "konventionelle" Schleife übertragen.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 21. März 2012 10:43
-
Hallo, habe das Problem erledigt. Habe es nun so gemacht wie immer, zwei querys, jedesmal die gesamte Ergebnismenge geholt, die Daten in je ein Tabelle kopiert, in einer Schleife die gemeinsame Tabelle der beiden Tabellen generiert und dann die DataRows der beiden Abfragetabellen über eine SChleife in die vereinte Tabelle eingelagert.
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 21. März 2012 10:43