使用 Linq C# WPF 将两个表连接到一个数据网格中
Joining two tables in one datagrid usig Linq C# WPF
我想将两个 table 连接到一个数据网格中。 table 一:tblProjects - table 二: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 我使用这个 class:
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 我使用这个 class:
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; }
}
现在我想加入这两个 table 并在一个数据网格中显示信息。我尝试了 Linq 连接语句,但出现此错误:
An unhandled exception of type 'System.InvalidCastException' occurred
in Haze.exe
Additional information: Unable to cast object of type
'System.Data.Linq.DataQuery1[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;
我不知道如何使用我必须在一个数据网格中显示的 class 将这两个 table 连接在一起。如果有人有任何建议或帮助,请不要犹豫发表评论。谢谢!
你尝试了吗
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();
这将为您提供一个新的匿名 class,其中包含您加入时的员工和项目详细信息。您的加入仅返回项目的值
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;
您的第一个代码块将用第二个代码块覆盖数据源的初始设置,而不是添加到它。
我想将两个 table 连接到一个数据网格中。 table 一:tblProjects - table 二: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 我使用这个 class:
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 我使用这个 class:
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; }
}
现在我想加入这两个 table 并在一个数据网格中显示信息。我尝试了 Linq 连接语句,但出现此错误:
An unhandled exception of type 'System.InvalidCastException' occurred in Haze.exe
Additional information: Unable to cast object of type 'System.Data.Linq.DataQuery
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;
我不知道如何使用我必须在一个数据网格中显示的 class 将这两个 table 连接在一起。如果有人有任何建议或帮助,请不要犹豫发表评论。谢谢!
你尝试了吗
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();
这将为您提供一个新的匿名 class,其中包含您加入时的员工和项目详细信息。您的加入仅返回项目的值
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;
您的第一个代码块将用第二个代码块覆盖数据源的初始设置,而不是添加到它。