วันพฤหัสบดีที่ ๒๙ กันยายน พ.ศ. ๒๕๕๔

แปลงผล LINQ เป็น DATATABLE

จากคำถามคุณ witsanukam ที่ GreatFriends นะครับ


Dim dtEmployee As New DataTable()
Dim dtDepartment As New DataTable()

'Define Columns/Data

dtEmployee.Columns.Add("EmployeeID", GetType(String))
dtEmployee.Columns.Add("EmployeeName", GetType(String))
dtEmployee.Columns.Add("OpenType", GetType(String))
dtEmployee.Columns.Add("DepartID", GetType(String))

dtEmployee.Rows.Add(New Object() {"001", "น้องฟ้า", "สดใส", 2})
dtEmployee.Rows.Add(New Object() {"002", "น้องนก", "น่ารัก", 2})
dtEmployee.Rows.Add(New Object() {"003", "ได้หลัง", "แล้วลืมหน้า", 2})


dtDepartment.Columns.Add("DepartID", GetType(String))
dtDepartment.Columns.Add("DepartName", GetType(String))

dtDepartment.Rows.Add(New Object() {1, "นักวิเคราะห์/นักแบบระบบ/อื่นฯ"})
dtDepartment.Rows.Add(New Object() {2, "โปรแกรมมั่ว"})
dtDepartment.Rows.Add(New Object() {3, "WOW อรชรอ้อนแอ้น"})

'*************************************************************
Dim dtResult As New DataTable
dtResult.Columns.Add("EmployeeID", GetType(String))
dtResult.Columns.Add("EmployeeName", GetType(String))
dtResult.Columns.Add("OpenType", GetType(String))
dtResult.Columns.Add("DepartID", GetType(String))
dtResult.Columns.Add("Department", GetType(String))

Dim dr As DataRow = dtResult.NewRow

Dim q = From j0 In dtEmployee.AsEnumerable() Join _
j1 In dtDepartment.AsEnumerable() _
On j0.Field(Of String)("DepartID") Equals j1.Field(Of String)("DepartID") _
Select dtResult.Rows.Add(New Object() {j0("EmployeeID"), j0("EmployeeName"), j0("OpenType"), j1("DepartID"), j1("DepartName")})


q.CopyToDataTable(dtResult, LoadOption.OverwriteChanges)


ลองทำดู คิดว่าเผื่ออนาคตอาจได้ใช้เลยเอามาเก็บไว้ใน blog ซะก่อน

ไม่มีความคิดเห็น: