如何使用LINQ查询语法在C#中填充GridView



我正在尝试使用实体框架在Windows窗体中填充GridView。我有以下类使用这些数据

Class Office
OfficeId
Region
Address
City
[ForeignKey("OfficeContactId")]
public virtual OfficeContact OfficeContacts
[ForeignKey("RegionalTechnicianId")]
public virtual RegionalTechnician RegionalTechnicians

Class OfficeContact
OfficeContactId
Name
Email
Phone

Class RegionalTechnician
RegionalTechnicianId
Name
Email
Phone

以下操作可以很好地使用Office数据(OfficeId、Region、Address、City(填充GridView,但我不确定如何提取其他数据

dataGridView.DataSource = context.Offices.ToList<Office>();
dataGridView.DataSource = (from office in context.Offices      
join OfficeContact in context.OfficeContacts on office.OfficeId equals OfficeContact.OfficeContactId 
join RegionalTechnician in context.RegionalTechnicians on office.OfficeId equals RegionalTechnician.RegionalTechnicianId
select new
{
OfficeId = office.OfficeId,
Region = office.Region,
Address = office.Address,
City = office.City,
OfficeContactId = OfficeContact.OfficeContactId,
OfficeContactName = OfficeContact.Name,
OfficeContactEmail = OfficeContact.Email,
OfficeContactPhone = OfficeContact.Phone,
RegionalTechnicianId = RegionalTechnician.RegionalTechnicianId,
RegionalTechnicianName = RegionalTechnician.Name,
RegionalTechnicianEmail = RegionalTechnician.Email,
RegionalTechnicianPhone = RegionalTechnician.Phone                
}).ToList();

牵引溶液

  1. 使用LINQ。

    请访问此页面。

    显示导航属性在数据网格中的属性第二级属性

  2. 在数据库中创建视图,在代码中创建视图模型。

例如:

Create View officeView
as 
Select o.OfficeId,
o.Region,
o.Address,
o.City,
r.Email,
r.Name,
r.Phone
From Office o
left join RegionalTechnician r on r.RegionalTechnicianId= o.RegionalTechnicianId
left join OfficeContact oc on oc.OfficeContactId= o.OfficeContactId

代码中:更新上下文(实体框架(

在更新上下文之后,您就有了这样的模型

public partial class officeView
{
public long OfficeId { get; set; }
public string Region { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string Email { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}

然后:

dataGridView.DataSource = context.officeViews.ToList();

最新更新