Laden...

Wie mit einer Linq-Abfrage alle Datensätze mit einer bestimmten Spalte ausgeben lassen?

Erstellt von oehrle vor 3 Jahren Letzter Beitrag vor 3 Jahren 507 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 3 Jahren
Wie mit einer Linq-Abfrage alle Datensätze mit einer bestimmten Spalte ausgeben lassen?

Hallo, ich möchte aus einer SQL-Tabelle alle Datensätze ausgeben lassen, aber nur mit der Spalte "Bestellname".

Wie mache ich das, habe da schon rumprobert, krieg es aber nicht hin, weil man noch umwandeln muss (Compilerfehler CS0029).


DataRow[] rowsExcel = tblExcelDaten.AsEnumerable().Where(x => x["Info"].ToString() == "Keine Bestellnummer").CopyToDataTable().AsEnumerable().Select(x => x.Field<string>("Bestellname")).Distinct().ToArray();

Wie mache ich das richtig?

4.931 Beiträge seit 2008
vor 3 Jahren

Du hast zwei unterschiedliche Datentypen.
Mit ToArray() erzeugst du ein, bezogen auf die Linq-Abfrage, erzeugtes Array (bei dir also string[]), während du es einem DataRow[] zuweisen möchtest.

Benötigst du überhaupt für die weitere Abarbeitung speziell ein DataRow-Array? Ansonsten nimm doch einfach


var rowsExcel = tblExcelDaten. ... .Distinct(); // auch auf das ToArray() würde ich verzichten

PS: Ist das CopyToDataTable().AsEnumerable() innerhalb deiner Linq-Abfrage nicht überflüssig?

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 3 Jahren

Hallo Th69, wennich das ganze sofort als DataTable hätte wäre das gut, ich müßte das Ergebnis als DataTable weitergeben.
Geht das nun, das ich die Abfrage mit der Tabelle mache, und davon mit LinQ nur die eine Spalte mit Daten weitergeben

Ansosnten müßte ich halt das Ergebnis einer DataTable zuweisen.

16.807 Beiträge seit 2008
vor 3 Jahren

Geht das nun, das ich die Abfrage mit der Tabelle mache, und davon mit LinQ nur die eine Spalte mit Daten weitergeben

Das ist so nicht möglich.
Die DataTable stellt bereits das materlisierte Ergebnis dar; Du kannst über DataTable keine Einschränkung umsetzen, die sich auf den SQL Query selbst auswirkt.

Dein Thema nennt sich Linq To DataSet.

4.931 Beiträge seit 2008
vor 3 Jahren

Dann mußt du einfach CopyToDataTable() als letztes benutzen:


var rowsExcel = tblExcelDaten. ... .Distinct().CopyToDataTable();