私は .aspx ページに DataGrid を設定しており、グリッドに表示されるデータをフィルタリングするためのドロップダウンがページにいくつかあります。LINQ を使用して、page_load およびドロップダウンの SelecedIndexChanged イベントにバインドする DataTable 内のデータをフィルター処理しようとしています。
これが私の現在のアプローチです:
Dim filteredData As DataTable = (From d In rawDataTable
Select d).CopyToDataTable
If Me.cbFilter1.SelectedIndex > 0 Then
filteredData = (From f In filteredData
Where f.Field(Of Date)("ADateField").Year = Me.cbFilter1.SelectedValue
Select f).CopyToDataTable
End If
If Me.cbFilter2.SelectedIndex > 0 Then
filteredData = (From f In filteredData
Where f.Field(Of String)("AStringField") = Me.cbFilter2.SelectedValue
Select f).CopyToDataTable
End If
If Me.cbFilter3.SelectedIndex > 0 Then
filteredData = (From f In filteredData
Where f.Field(Of Boolean)("ABooleanField") = (cbFilter3.SelectedValue = "Yes")
Select f).CopyToDataTable
End If
' ...and finally binding my grid to filteredData
これを行うためのよりクリーンで効率的な方法はありますか? どのようにしますか?ありがとう!