簡體   English   中英

在一個datagrid usig Linq C#WPF中聯接兩個表

[英]Joining two tables in one datagrid usig Linq C# WPF

我想將兩個表連接到一個數據網格中。 表一: tblProjects-表二: tblEmployeeLoginDetails

在此方法中- private void FillProjectsDataGrid()我想使用以下編碼填充數據網格:

            dgViewProjects.ItemsSource = DC.tblProjects.Where<tblProject>(c => c.ProjectID != null)
                .Select<tblProject, ProjectData>(m => new ProjectData()
                {
                    ProjectID = m.ProjectID,
                    Name = m.ProjectName,
                    Status = m.ProjectStatus,
                    Employee = m.EmployeeName,
                });

            dgViewProjects.ItemsSource = DC.tblEmployeeLoginDetails.Where<tblEmployeeLoginDetail>(c => c.LoginID != null)
                .Select<tblEmployeeLoginDetail, EIDData>(m => new EIDData()
                {
                    UserID = m.LoginID,
                    Name = m.EmployeeName,
                    Surname = m.EmployeeSurname,
                    Email = m.EmployeeEmailAddress,
                    Password = m.EmployeePassword,
                    Role = m.RoleID.ToString(),
                    Department = m.EmployeeDepartment,
                    IDNumber = m.EmployeeIDNumber,
                    Gender = m.EmployeeGender,
                    Date = m.EmployeeDOB.Value,
                    HomeAddress = m.EmployeeHomeAddress,
                    Telephone = m.EmployeeTelephoneNumber,
                    City = m.EmployeeCity,
                    Province = m.EmployeeProvinceCode,
                    SetImage = m.EmployeeProfilePicture
                });

對於tblProjects,我使用此類:

public struct PDData
{
    public string _project;

    public int ProjectID { get; set; }
    public string Name { get; set; }
    public string Status { get; set; }
    public string Employee { get; set; }
}

對於tblEmployeeLoginDetails,我使用此類:

public struct EIDData
{
    public string _sts;

    public int UserID { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string Role { get; set; }
    public string Department { get; set; }
    public string IDNumber { get; set; }
    public string Gender { get; set; }
    public DateTime Date { get; set; }
    public string HomeAddress { get; set; }
    public string Telephone { get; set; }
    public string City { get; set; }
    public string Province { get; set; }
    public Binary SetImage { get; set; }
}

現在,我想連接這兩個表並將信息顯示在一個datagrid中。 我嘗試了Linq join語句,但出現此錯誤:

Haze.exe中發生了'System.InvalidCastException'類型的未處理異常

附加信息:無法將類型為“ System.Data.Linq.DataQuery 1[Haze.tblProject]' to type 'System.Collections.Generic.List對象1[Haze.tblProject]' to type 'System.Collections.Generic.List 1 [Haze.tblProject]”的對象。

最后是我的聯接代碼:

        List<tblProject> Join = (List<tblProject>)from u in DC.tblEmployeeLoginDetails
                                                  join b in DC.tblProjects
                                                  on u.LoginID equals b.ProjectID
                                                  where b.ProjectID != null
                                                  select b;

我不知道如何使用必須在一個數據網格中顯示它的類將這兩個表連接在一起。 如果有人有任何建議或幫助,請隨時發表評論。 謝謝!

這將為您提供一個新的匿名課程,其中包含您加入的員工和項目的詳細信息。 您擁有的聯接僅返回項目的值

    var Join = (from u in DC.tblEmployeeLoginDetails
                                              join b in DC.tblProjects
                                              on u.LoginID equals b.ProjectID
                                              where b.ProjectID != null
                                              select new {Project=a, Employee=b}).ToList();

然后,您必須將其綁定到數據表,如下所示:

    dgViewProjects.ItemsSource = Join;

您的第一段代碼將用第二段而不是添加到第二段覆蓋數據源的初始設置。

你試過了嗎

    List<tblProject> Join = (from u in DC.tblEmployeeLoginDetails
                                      join b in DC.tblProjects
                                      on u.LoginID equals b.ProjectID
                                      where b.ProjectID != null
                                      select b).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM