在加入 C# WPF Linq 中使用 类 而不是匿名类型
Using classes instead of anonymous type in join C# WPF Linq
我需要从在 JOIN 语句中使用 anonymous 类型改为使用 classes。我的编码:
using (DataClassesDataContext DC = new DataClassesDataContext())
{
var Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new
{
b.ProjectID,
b.ProjectName,
b.ProjectStatus,
a.EmployeeName,
a.EmployeeSurname,
c.ClientName,
}).ToList();
dgViewProjects.ItemsSource = Join;
}
我的 classes: PIDData & EIDData
PIDData:
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; }
}
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; }
}
现在我对 c# 和一般编码还很陌生,所以这对我来说有点棘手和令人沮丧。我不知道如何在我的连接语句中使用我的 classes 而不是匿名类型。
使用 classes 将帮助我更轻松地管理程序中数据网格中的数据。请分享任何建议或让我知道是否有更多信息可以帮助我回答问题,谢谢!
编辑:
这是 JOIN 现在的样子:
using (DataClassesDataContext DC = new DataClassesDataContext())
{
List<Match> Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new Match
{
ProjectIDM = b.ProjectID,
ProjectNameM = b.ProjectName,
ProjectStatusM = b.ProjectStatus,
EmployeeNameM = a.EmployeeName,
EmployeeSurnameM = a.EmployeeSurname,
ClientNameM = c.ClientName,
}).ToList();
dgViewProjects.ItemsSource = Join;
}
顽皮,我还创建了你建议的 class。
我没有收到任何错误...这非常好,但是我的 datagridview 中不再显示数据。我想可能是因为这个:
dgViewProjects.ItemsSource = Join;
如果你想使用结构 不是 DataClassesDataContext 的一部分,你可以使用匿名类型,但你可以将它转换成你自己的类型
var Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new
{
ProjectID = b.ProjectID,
ProjectName = b.ProjectName,
ProjectStatus = b.ProjectStatus,
EmployeeName = a.EmployeeName,
EmployeeSurname = a.EmployeeSurname,
ClientName = c.ClientName,
}).ToList().Select(x => new PIDData
{
ProjectID = b.ProjectID,
Name = b.ProjectName,
Status = b.ProjectStatus,
}).ToList() ;
首先你制作一个 class/struct 匹配你想要的数据 return:
public class Match
{
public int ProjectID { get; set; }
public string ProjectName { get; set; }
public object ProjectStatus { get; set; }
public string EmployeeName { get; set; }
public string EmployeeSurname { get; set; }
public string ClientName { get; set; }
}
然后您在 select new
:
中创建并填充实例
select new Match
{
ProjectID = b.ProjectID,
ProjectName = b.ProjectName,
ProjectStatus = b.ProjectStatus,
EmployeeName = a.EmployeeName,
EmployeeSurname = a.EmployeeSurname,
ClientName = c.ClientName,
}).ToList();
现在,您的变量 Join
将是 List<Match>
类型
我需要从在 JOIN 语句中使用 anonymous 类型改为使用 classes。我的编码:
using (DataClassesDataContext DC = new DataClassesDataContext())
{
var Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new
{
b.ProjectID,
b.ProjectName,
b.ProjectStatus,
a.EmployeeName,
a.EmployeeSurname,
c.ClientName,
}).ToList();
dgViewProjects.ItemsSource = Join;
}
我的 classes: PIDData & EIDData
PIDData:
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; }
}
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; }
}
现在我对 c# 和一般编码还很陌生,所以这对我来说有点棘手和令人沮丧。我不知道如何在我的连接语句中使用我的 classes 而不是匿名类型。
使用 classes 将帮助我更轻松地管理程序中数据网格中的数据。请分享任何建议或让我知道是否有更多信息可以帮助我回答问题,谢谢!
编辑:
这是 JOIN 现在的样子:
using (DataClassesDataContext DC = new DataClassesDataContext())
{
List<Match> Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new Match
{
ProjectIDM = b.ProjectID,
ProjectNameM = b.ProjectName,
ProjectStatusM = b.ProjectStatus,
EmployeeNameM = a.EmployeeName,
EmployeeSurnameM = a.EmployeeSurname,
ClientNameM = c.ClientName,
}).ToList();
dgViewProjects.ItemsSource = Join;
}
顽皮,我还创建了你建议的 class。
我没有收到任何错误...这非常好,但是我的 datagridview 中不再显示数据。我想可能是因为这个:
dgViewProjects.ItemsSource = Join;
如果你想使用结构 不是 DataClassesDataContext 的一部分,你可以使用匿名类型,但你可以将它转换成你自己的类型
var Join = (from a in DC.tblEmployeeLoginDetails
join b in DC.tblProjects
on a.LoginID equals b.ProjectID
join c in DC.tblClientLoginDetails
on b.ProjectID equals c.ClientLoginID
where c.ClientLoginID != null
select new
{
ProjectID = b.ProjectID,
ProjectName = b.ProjectName,
ProjectStatus = b.ProjectStatus,
EmployeeName = a.EmployeeName,
EmployeeSurname = a.EmployeeSurname,
ClientName = c.ClientName,
}).ToList().Select(x => new PIDData
{
ProjectID = b.ProjectID,
Name = b.ProjectName,
Status = b.ProjectStatus,
}).ToList() ;
首先你制作一个 class/struct 匹配你想要的数据 return:
public class Match
{
public int ProjectID { get; set; }
public string ProjectName { get; set; }
public object ProjectStatus { get; set; }
public string EmployeeName { get; set; }
public string EmployeeSurname { get; set; }
public string ClientName { get; set; }
}
然后您在 select new
:
select new Match
{
ProjectID = b.ProjectID,
ProjectName = b.ProjectName,
ProjectStatus = b.ProjectStatus,
EmployeeName = a.EmployeeName,
EmployeeSurname = a.EmployeeSurname,
ClientName = c.ClientName,
}).ToList();
现在,您的变量 Join
将是 List<Match>