VB.NET Datatable.Wählen Sie die Option Ausdruck
ist es möglich, filter-Ausdruck zur Auswahl einige Spalten?
so etwas wie select a,b,c from table
im sql
hier ist, was ich versuche zu tun,
Dim rows() As DataRow = bookedorders.Select("a,b,c") 'select columns a b c only, i know its wrong
Dim zzz As DataTable = rows.CopyToDataTable
so ist es möglich, verwenden Sie die Datatable.Wählen Sie auf Spalten auswählen, und verwenden Sie eine Bedingung, wie sql WHERE a=1
meine linq-versuchen wurde
Dim q = From r In bookedorders.AsEnumerable Select r.Field(Of Integer)("a") And r.Field(Of String)("b") And r.Field(Of String)("c") And r.Field(Of Integer)("d")
For Each m In q
zzz.Rows.Add(m)
Next
was aber nicht zu funktionieren scheint, heißt es, dass die Anzahl der Elemente im array ist länger als die datatable!
- Mein wissen von VB.NET LINQ ist ein bisschen verrostet, sorry für die nicht die Bereitstellung der richtigen LINQ-syntax aus der ersten Zeit. Check meine Antwort - hier ist, wie Sie es tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
DataTable.Wählen Sie können Sie einen filter angeben, wie ein
String
:Können Sie keine Spalten angeben, die extrahiert werden sollen, da brechen würde, dass Typ-Struktur, wie es erwartet wird, zur Rückgabe
DataRow
als Sie ursprünglich hatte. Wenn Sie wurden wieder nur bestimmte Spalten, müssten Sie eine andereDataTable
zu enthalten.Vorausgesetzt, diese Funktionalität existiert, die Begrenzung der Anzahl der zurückgegebenen Spalten, ist nicht praktikabel, denn Sie haben schon Ihre
DataRow
s mit Daten gefüllt, im Gegensatz zuselect a,b,c from table
, wo Sie verringern können Netzwerk-Bandbreite und Geschwindigkeit bis Abfrageleistung, indem Sie nur bestimmte Spalten extrahiert werden aus einer Datenbank.Wenn Sie möchten, verwenden Sie LINQ, Sie können es so machen:
Beachten Sie, dass Sie nicht verwenden die Ergebnisse dieser Abfrage direkt
.Add
Zeilen auf eineDataTable
, weil zurückgegebenen enumeration ist nicht der TypDataRow
. Wenn Sie es brauchen dringend, hier ist eine Implementierung auf der MSDN-Website.