Wishitems | Price |
---|---|
Microsoft Bluetooth Compact Keyboard | 89,900 |
Microsoft Bluetooth Compact Keyboard | 80,870 |
Microsoft Bluetooth Number Pad | 39,500 |
Microsoft Bluetooth Number Pad | 100,000 |
Realforce for Mac TKL | 286,880 |
Realforce for Mac TKL | 317,000 |
Realforce for Mac TKL | 416,000 |
Majestouch Convertible 2 Pink | 187,500 |
Majestouch Convertible 2 Pink | 191,980 |
Majestouch Convertible 2 Pink | 181,280 |
위와 같이 위시리스트 혹은 쇼핑리스트와 같은 표에서 특정 항목에 대한 하위 목록들을 필터링하여 표시하고 싶은 경우가 존재합니다.
이를 구현하는 방법에는 여러가지 방법이 있지만 Linq 를 이용하여 필터링 하는 방법으로 접근해보았습니다.
Private Sub LinqFilter() If Not (_Wishlist_DB Is Nothing) Then '// Wishlist 행의 Realforce For Mac TKL 이라는 값과 일치하면 '// "Realforce For Mac TKL" 항목들과 일치하는 Price 행의 값들을 Select 한다. Dim query = From r In _Wishlist_DB Where r.Field(Of String)("Wishitems") = "Realforce For Mac TKL" Select New With { .tablesName = r.Field(Of String)("Price") } Dim tempDt As DataTable = New DataTable '// Clone 메서드를 이용하여 행들을 복제한다. tempDt = _Wishlist_DB.Clone '// Linq 로 조회된 데이터를 임시적으로 생성한 datatable 에 삽입한다. For Each item In query tempDt.Rows.Add(item.tablesName) Next '// ComboBox 컨트롤의 아이템들을 초기화 한다. __cbTable.Items.Clear() '// ComboBox 컨트롤에 아이템을 추가한다. For Each dr As DataRow In tempDt.Rows __cbTable.Items.Add(dr(0).ToString) Next '// 맨 처음 목록을 리스트에 올려준다. __cbTable.SelectedIndex = 0 End If End Sub