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