次の方法で共有


DataView を使用したデータの並べ替えとフィルタ処理

DataView には、DataTable のデータの並べ替えとフィルタ処理のためのさまざまな機能が備わっています。

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

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

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

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

  • 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 で並べ替え、さらに製品名で並べ替えたビューを作成するコード例を次に示します。

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

参照

DataView の作成と使用 | DataViewRowState 列挙値 | DataColumn.Expression プロパティ | DataTable クラス | DataView クラス