VB.NET

2014-06-20 2 views
1
에 LINQ를 사용하여 사전에 DataTable의 변환

I가이 SQL 사용하여 SQL 테이블에서 결과를 꺼내서 DataTable을 :VB.NET

SELECT firstName,lastName,companyName,address1,countryCode FROM dbo.users 

내가 가진 사전 - 억양 구조에이 DataTable을 변환하고 싶습니다를 위의 각 필드에 대한 키는 열 이름이고 값은 해당 열의 각 DataRow에 대한 값입니다. C#에서 수행하는 방법에 대한 모호한 아이디어가 있지만 VB.NET LINQ 구문이 완전히 다르기 때문에이 작업을 수행하는 방법을 파악하는 데 어려움을 겪고 있습니다 ..

구조체 (JSON에서 시각화 됨)는 다음과 유사합니다. 이 : 사전 - 억양으로 당신이 얻을 수있는 약

[ 
    { 
     "firstName": "Adam", 
     "lastName": "Smith", 
     "address1": "123 Old St", 
     "companyName": "Fake Company", 
     "countryCode": "us" 
    }, 
    { 
     "firstName": "Paul", 
     "lastName": "Jones", 
     "address1": "474 Old St", 
     "companyName": "Fake Company", 
     "countryCode": "gb" 
    } 
] 
+0

시도 [이]를 (http://www.aspdotnet-suresh.com/2013/05/c- convert-datatable-to-json-string-in-c.html) –

+1

그런 다음 열로 속성을 매핑하고 행을 반복하여 해당 클래스 객체를 일반 목록 에 추가하십시오. –

답변

1

Dictionary(Of String, String)은 다음과 같습니다

Dim result As IEnumerable(Of Dictionary(Of String, String)) = 
    From r As DataRow In myDataTable.AsEnumerable() 
    Select New Dictionary(Of String, String) From { 
     { "firstName", r.Field(Of String)("firstName") }, 
     { "lastName", r.Field(Of String)("lastName") }, 
     { "address1", r.Field(Of String)("address1") }, 
     { "companyName", r.Field(Of String)("companyName") }, 
     { "countryCode", r.Field(Of String)("countryCode") } 
    } 

또한 익명의 유형 사용할 수 있습니다

을 10

또는, 의견 제안, 해당 클래스를 생성하고 반환 할 수 :

Public Class User 
    Public Property firstName As String 
    Public Property lastName As String 
    Public Property address1 As String 
    Public Property companyName As String 
    Public Property countryCode As String 
End Class 

Dim result3 = 
    From r In myDataTable.AsEnumerable() 
    Select New User With { 
     .firstName = r.Field(Of String)("firstName"), 
     .lastName = r.Field(Of String)("lastName"), 
     .address1 = r.Field(Of String)("address1"), 
     .companyName = r.Field(Of String)("companyName"), 
     .countryCode = r.Field(Of String)("countryCode") 
    } 
+0

정말 고마워요! 따라서 VB 구문에는 익숙하지 않습니다. – adaam