【问题标题】:How to use LINQ Query Syntax to populate a GridView in C#如何使用 LINQ 查询语法在 C# 中填充 GridView
【发布时间】:2022-01-24 14:31:24
【问题描述】:

我正在尝试使用实体框架在 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、地区、地址、城市)填充 GridView,但我不确定如何提取其他数据。

dataGridView.DataSource = context.Offices.ToList<Office>();

【问题讨论】:

标签: c# winforms entity-framework


【解决方案1】:
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();

【讨论】:

    【解决方案2】:

    解决方案

    1. 使用 LINQ。

      请访问此页面。

      show-properties-of-a-navigation-property-in-datagridview-second-level-propertie

    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();
    

    【讨论】:

    • PascalCase 类,请
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多