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?
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?
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.
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Dann mußt du einfach CopyToDataTable()
als letztes benutzen:
var rowsExcel = tblExcelDaten. ... .Distinct().CopyToDataTable();