Announcement

Collapse
No announcement yet.

Datatable per Linq mit Daten füllen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datatable per Linq mit Daten füllen

    Hallo zusammen,

    ich stehe mal wieder auf dem Schlauch. Ich versuche per Linq aus einer Datatable Daten zu selektieren und in eine anderen Datatable abzulegen.

    Ich habe eine Datatable _cntx.Detail in der sind diverse Artikel mit je einem Satz pro Farbe enthalten und möchte jetzt von einem Artikel alle Farben haben. der Artikel steht in row["CKey"]

    Anlage der Tabelle und füllen der selben. (Völlig aus dem Zusammenhang gerissen, aber der Teil klappt ja, die Tabelle hat Daten)
    [highlight=c#]
    System.Data.DataTable _cntx.Detail = new System.Data.DataTable("Detail");
    da.Fill(_cntx.Detail);
    [/highlight]

    Dann versuche ich die Farben der einzelnen Artikel abzufragen:
    [highlight=c#]
    System.Data.DataTable dttr = _cntx.Detail.Clone();
    dttr.TableName = "Colors";

    dttr = (from a in _cntx.Detail.AsEnumerable()
    where a["CKey"] == row["CKey"]
    orderby a["sls_qty"] descending
    select a).CopyToDataTable();

    foreach(System.Data.DataRow r in dttr.Rows)
    {
    Debug.WriteLine(r["CKey"].ToString());
    }
    [/highlight]

    und obwohl ich per ? dttr.Rows[0]["CKey"] im Direktfenster den korrekten Schlüssel angezeigt bekomme springt das Programm über die foreach-Schleife hinweg und gibt mir folgende Hinweise.
    Einzelschritt: System.Data.DataTable.Rows.get-Methode ohne Symbole wird übersprungen.
    Einzelschritt: System.Data.DataRowCollection.GetEnumerator-Methode ohne Symbole wird übersprungen.


    Ich verstehe im Moment nicht was ich falsch gemacht habe.

    Hat jemand eine Idee und kann mir auf die Sprünge helfen?

    mit freundlichem Gruß

    Womble

  • #2
    Ich sehe da jetzt keine Problem beim foreach.
    Der Hinweis ist normal wenn du versucht hast in den Framework Code zu steppen und du hast die Debug Symbole des Frameworks aber nicht zur Hand.
    Das Clonen vorher ist unnötig CopyToDataTable erzeugt eh eine neue DataTable.

    Du könntest das ganze mal ohne Linq mit den Standardfeatures einer DataTable versuchen. Aka
    [HIGHLIGHT=C#]DataTable dttr = _cntx.Detail.Select($"CKey = '{row["CKey"]}'", "sls_qty").CopyToDataTable();[/HIGHLIGHT]

    Comment


    • #3
      Hi Ralf,

      Danke für die schnelle Antwort, manchmal sieht man den Wald vor lauter Bäumen nicht. Ich war so auf Linq fixiert das ich den offensichtlichen Weg tatsächlich völlig aus den Augen verloren habe.

      Gruß Womble

      Comment

      Working...
      X