DataViewでは、DataTableでデータを並べ替え、フィルター処理するいくつかの方法が提供されます。
Sort プロパティを使用すると、単一または複数の列の並べ替え順序を指定し、ASC (昇順) パラメーターと DESC (降順) パラメーターを含めることができます。
ApplyDefaultSort プロパティを使用すると、テーブルの主キー列または列に基づいて、並べ替え順序を昇順で自動的に作成できます。 ApplyDefaultSort Sort プロパティが null 参照または空の文字列である場合、およびテーブルに主キーが定義されている場合にのみ適用されます。
RowFilter プロパティを使用して、列の値に基づいて行のサブセットを指定できます。 RowFilter プロパティの有効な式の詳細については、DataColumn クラスのExpression プロパティのリファレンス情報を参照してください。
データのサブセットの動的ビューを提供するのではなく、データに対する特定のクエリの結果を返す場合は、DataView のFindメソッドまたはFindRowsメソッドを使用して、RowFilter プロパティを設定するのではなく、最適なパフォーマンスを実現します。 RowFilter プロパティを設定すると、データのインデックスが再構築され、アプリケーションにオーバーヘッドが追加され、パフォーマンスが低下します。 RowFilter プロパティは、バインドされたコントロールがフィルター処理された結果を表示するデータ バインド アプリケーションで最適に使用されます。 Find メソッドと FindRows メソッドは、インデックスの再構築を必要とせずに、現在のインデックスを利用します。 Find メソッドと FindRows メソッドの詳細については、「行の検索」を参照してください。
RowStateFilter プロパティを使用して、表示する行のバージョンを指定できます。 DataView は、基になる行の RowState に応じて、公開する行のバージョンを暗黙的に管理します。 たとえば、RowStateFilter が DataViewRowState.Deleted に設定されている場合、DataView では、現在の行バージョンがないため、すべての削除済み行の元の行バージョンが公開されます。 DataRowView の RowVersion プロパティを使用して、どの行バージョンの行が公開されているかを確認できます。
次の表に、 DataViewRowState のオプションを示します。
DataViewRowState オプション 説明 CurrentRows 変更されていない行、追加された行、および変更された行の現在の行バージョン。 これが既定値です。 "追加" 追加されたすべての行の現在の行バージョン。 削除 削除されたすべての行の元の行バージョン。 ModifiedCurrent 変更されたすべての行の現在の行バージョン。 ModifiedOriginal 変更されたすべての行の元の行バージョン。 なし 行はありません。 OriginalRows 変更されていない、変更された、削除されたすべての行の元の行バージョン。 変更なし 変更されていないすべての行の現在の行バージョン。
行の状態と行のバージョンの詳細については、「 行の状態と行のバージョン」を参照してください。
次のコード例では、在庫数が並べ替えレベル以下のすべての製品を表示するビューを作成し、最初に仕入先 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);