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

2020. 4. 10. 10:27VB.NET

728x90
반응형

 

예를들어 위와 같은 table이 있다고 치면

AAA를 선택했을 때 AAA에 딸려있는 하위 목록들을 불러오고 싶을 때

여러가지 방법들이 있지만 Linq를 이용하여 작업을 했다.

 

Private Sub test()

    If Not (_info_db Is Nothing) Then
        '// Column1 의 AAA라는 값과 일치하면
        '// AAA와 일치하는 Column2의 값들을 Select 한다.
        Dim query = From r In _info_db
                    Where r.Field(Of String)("Column1") = "AAA"
                    Select New With
                        {
                            .tablesName = r.Field(Of String)("Column2")
                        }
        Dim tmpDt As DataTable = New DataTable

        '// Clone 메서드를 이용하여 컬럼을 복제한다.
        tmpDt = _info_db.Clone
        '// Linq로 조회된 데이터를 temp datatable에 담는다.
        For Each item In query
            tmpDt.Rows.Add(item.tablesName)
        Next

        '// 콤보박스 아이템들을 초기화 한다.
        __cbTable.Items.Clear()

        '// 콤보박스에 아이템을 추가한다.
        For Each dr As DataRow In tmpDt.Rows
            __cbTable.Items.Add(dr(0).ToString)
        Next

        '// 맨 처음 목록을 리스트에 올려준다.
        __cbTable.SelectedIndex = 0
    End If
End Sub





728x90
반응형