Select Entity to List<Object> (LINQ, Entity Framework) ปกติแล้วในการ Select ข้อมูลจาก EntitySet แล้วใช้ .ToList() เราจะได้โครงสร้าง List ที่เป็น Object ที่มี Attribute ตามโครงสร้างของ Table แต่ถ้าต้องการให้เป็น Object ตามโคางสร้างก็สามารถสร้าง Class ขึ้นมาแล้วตอนที่ทำการเลือก EntitySet ก็ใช้การ New ให้เป็น List ตามที่โครงสร้างตาม Object ที่เราประกาศขึ้น
Example การ Select ข้อมูลจาก EntitySet แล้วแปลงค่าให้เป็น List Object ใหม่
รายการข้อมูลใน Table
Code (C#)
public class CustomerInfo
{
public string CusID { get; set; }
public string CusName { get; set; }
public string CountryName { get; set; }
}
private void frmMain_Load(object sender, EventArgs e)
{
// Create new entities from Entities
using (var db = new myDatabaseEntities())
{
// Create List CustomerInfo Object
List<CustomerInfo> ls;
// Get data from CUSTOMER and join COUNTRY
ls = (from c in db.CUSTOMER
join d in db.COUNTRY on c.COUNTRY_CODE equals d.COUNTRY_CODE
select new CustomerInfo
{
CusID = c.CUSTOMER_ID,
CusName = c.NAME,
CountryName = d.COUNTRY_NAME
}).ToList();
// if found item rows
if (ls.Count() > 0)
{
this.myDataGridView.DataSource = ls;
}
}
}
Code (VB.Net)
Public Class CustomerInfo
Public Property CusID() As String
Get
Return m_CusID
End Get
Set
m_CusID = Value
End Set
End Property
Private m_CusID As String
Public Property CusName() As String
Get
Return m_CusName
End Get
Set
m_CusName = Value
End Set
End Property
Private m_CusName As String
Public Property CountryName() As String
Get
Return m_CountryName
End Get
Set
m_CountryName = Value
End Set
End Property
Private m_CountryName As String
End Class
Private Sub frmMain_Load(sender As Object, e As EventArgs)
' Create new entities from Entities
Using db = New myDatabaseEntities()
' Create List CustomerInfo Object
Dim ls As List(Of CustomerInfo)
' Get data from CUSTOMER and join COUNTRY
ls = (From c In db.CUSTOMER
Join d In db.COUNTRY On c.COUNTRY_CODE = d.COUNTRY_CODE
New CustomerInfo() With { _
.CusID = c.CUSTOMER_ID, _
.CusName = c.NAME, _
.CountryName = d.COUNTRY_NAME _
}).ToList()
' if found item rows
If ls.Count() > 0 Then
Me.myDataGridView.DataSource = ls
End If
End Using
End Sub