次の方法で共有


データの並べ替えとフィルター処理 (ADO.NET)

DataView には、DataTable のデータの並べ替えとフィルター処理を行うさまざまな方法が用意されています。

  • Sort プロパティを使用すれば、1 列または複数列の並べ替え順序を指定し、ASC (昇順) パラメーターと DESC (降順) パラメーターを含めることができます。

  • ApplyDefaultSort プロパティを使用すると、テーブルの主キー列 (1 列または複数列) に基づいて、昇順の並べ替え順序を自動的に作成できます。 Sort プロパティが null 参照または空の文字列の場合、およびテーブルに主キーが定義されている場合は、ApplyDefaultSort だけが適用されます。

  • RowFilter プロパティを使用すると、列の値に基づいて行のサブセットを指定できます。 RowFilter プロパティの有効な式の詳細については、DataColumn クラスの Expression プロパティの情報を参照してください。

    データ サブセットの動的ビューの作成とは対照的に、データに対して特定のクエリの実行結果を返す場合、パフォーマンスを最大限に引き出すには、RowFilter プロパティを設定する代わりに DataViewFind メソッドまたは FindRows メソッドを使用します。 RowFilter プロパティを設定すると、データのインデックスが再作成され、アプリケーションのオーバーヘッドが増加してパフォーマンスの低下を招きます。 RowFilter プロパティは、データ連結アプリケーションでの使用に適しています。このアプリケーションでは、連結されたコントロールによってフィルター処理結果が表示されます。 Find メソッドと FindRows メソッドでは、現在のインデックスが使用されます。このため、インデックスを再作成する必要はありません。 Find メソッドと FindRows メソッドの詳細については、「行の検索 (ADO.NET)」を参照してください。

  • RowStateFilter プロパティを使用して、表示する行バージョンを指定できます。 DataView は、基になる行の RowState に従って、暗黙的に行バージョンを公開します。 たとえば、RowStateFilterDataViewRowState.Deleted に設定されている場合、DataView は行バージョンが OriginalDeleted 行をすべて公開します。これは、Current 行バージョンが存在しないためです。 DataRowViewRowVersion プロパティを使用すると、公開される行のバージョンを確認できます。

    DataViewRowState のオプションを次の表に示します。

    DataViewRowState のオプション

    説明

    CurrentRows

    Current 行バージョンのすべての Unchanged 行、Added 行、および Modified 行です。 これは、既定の設定です。

    Added

    Current 行バージョンのすべての Added 行です。

    Deleted

    Original 行バージョンのすべての Deleted 行です。

    ModifiedCurrent

    Current 行バージョンのすべての Modified 行です。

    ModifiedOriginal

    Original 行バージョンのすべての Modified 行です。

    None

    行がありません。

    OriginalRows

    Original 行バージョンのすべての Unchanged 行、Modified 行、および Deleted 行です。

    Unchanged

    Current 行バージョンのすべての Unchanged 行です。

行状態と行バージョンの詳細については、「行の状態とバージョン」を参照してください。

在庫数が標準在庫数以下である製品を、仕入先 ID (supplier ID) で並べ替え、さらに製品名 (product name) で並べ替えたビューを作成するコード サンプルを次に示します。

Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
   "UnitsInStock <= ReorderLevel", _
   "SupplierID, ProductName", _
   DataViewRowState.CurrentRows)
DataView prodView = new DataView(prodDS.Tables["Products"],
   "UnitsInStock <= ReorderLevel",
   "SupplierID, ProductName",
   DataViewRowState.CurrentRows);

参照

参照

DataViewRowState

DataColumn.Expression

DataTable

DataView

その他の技術情報

DataView (ADO.NET)