我正在我的.aspx頁面中填充一個DataGrid,並在頁面上有一些下拉列表,用於過濾出現在網格中的數據。我正嘗試使用LINQ來過濾綁定到page_load和下拉菜單的SelecedIndexChanged事件的DataTable中的數據。我是否正確使用LINQ來應用可變數量的過濾器?
這是我目前的做法:
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
是否有一個更清潔,更有效的方式來做到這一點?你會怎麼做? 謝謝!
不知道如果我的標題正確地描述了我在問什麼這裏 – unnknown 2012-08-14 14:32:25