データの並べ替えとフィルター処理

DataViewでは、DataTableでデータを並べ替え、フィルター処理するいくつかの方法が提供されます。

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

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

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

    データのサブセットの動的ビューを提供するのではなく、データに対する特定のクエリの結果を返す場合は、Find プロパティを設定するのではなく、FindRowsDataViewまたはRowFilterメソッドを使用して最適なパフォーマンスを実現します。 RowFilter プロパティを設定すると、データのインデックスが再構築され、アプリケーションにオーバーヘッドが追加され、パフォーマンスが低下します。 RowFilter プロパティは、バインドされたコントロールがフィルター処理された結果を表示するデータ バインド アプリケーションで最適に使用されます。 FindメソッドとFindRowsメソッドは、インデックスを再構築する必要なく、現在のインデックスを利用します。 FindメソッドとFindRowsメソッドの詳細については、「行の検索」を参照してください。

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

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

    DataViewRowState オプション 説明
    CurrentRows すべてのCurrent行、追加済み行、および行のCurrentバージョン。 これが既定値です。
    "追加" すべてのCurrent行に対応するAdded行のバージョン。
    削除 すべてのOriginal行に対応するDeleted行のバージョン。
    ModifiedCurrent すべてのCurrent行に対応するModified行のバージョン。
    ModifiedOriginal すべてのOriginal行に対応するModified行のバージョン。
    なし 行がありません。
    OriginalRows Originalすべての変更されていない行、変更された行、およびDeleted行の行バージョン。
    変更なし すべてのCurrent行に対応するUnchanged行のバージョン。

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

次のコード例では、在庫数が並べ替えレベル以下のすべての製品を表示するビューを作成し、最初に仕入先 ID で並べ替え、次に製品名で並べ替えます。

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);

こちらも参照ください