0

フィルタ式を使用していくつかの列を選択することは可能ですか?select a,b,c from tableSQLのようなもの

これが私がやろうとしていることです

 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

Datatable.Selectを使用して列を選択し、sqlなどの条件を使用することは可能ですか。WHERE a=1

私のlinqの試みは

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

これは機能していないようですが、配列内のアイテムの数がデータテーブルよりも長いことを示しています!

4

1 に答える 1

1

DataTable.Selectを使用すると、フィルターをString:として指定できます。

bookedorders.Select("a = 1")

抽出する列を指定することはできません。これは、元の状態と同じように返されることが期待されるため、タイプ構造が破損するためですDataRow。特定の列のみを返す場合はDataTable、それらを含めるために別の列が必要になります。

この機能が存在すると仮定すると、返される列の数を制限することは実用的ではありません。これは、データベースから抽出する特定の列のみを指定することでネットワーク帯域幅を減らし、クエリのパフォーマンスを高速化できるDataRowのとは異なり、すでにデータで満たされているためです。select a,b,c from table

LINQを使用する場合は、次のように実行できます。

From r In bookedorders Select a=r.Field(Of Integer)("a"), b=r.Field(Of String)("b"), c=r.Field(Of String)("c"), d=r.Field(Of Integer)("d")

返される列挙型はタイプではないため、このクエリの結果を使用して直接.Add行をに変換することはできないことに注意してください。ひどく必要な場合は、MSDNの実装を次に示します。DataTableDataRow

于 2012-10-20T13:55:42.090 に答える