VB :: Code & APIs

[VB.NET] Linq 를 이용하여 DataTable 에서 일치하는 항목 출력하기

WishitemsPrice
Microsoft Bluetooth Compact Keyboard89,900
Microsoft Bluetooth Compact Keyboard80,870
Microsoft Bluetooth Number Pad39,500
Microsoft Bluetooth Number Pad100,000
Realforce for Mac TKL286,880
Realforce for Mac TKL317,000
Realforce for Mac TKL416,000
Majestouch Convertible 2 Pink187,500
Majestouch Convertible 2 Pink191,980
Majestouch Convertible 2 Pink181,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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: