2015-04-22 29 views
0

我需要从在我的JOIN语句中使用匿名类型改为使用来代替。我的编码:在连接中使用类而不是匿名类型C#WPF Linq

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; 
} 

我的课: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#和编码都很陌生,所以这对我来说有点棘手和令人沮丧。我不知道如何在我的join语句中使用我的类而不是匿名类型。

使用这些类将帮助我更轻松地管理我的程序中的数据网格中的数据。请分享任何建议或让我知道是否有任何更多的信息可以帮助我回答这个问题,谢谢!

编辑:

这里是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; 
     } 

Nautious,我还创建了你的建议类。

我没有收到任何错误...这是非常好的,但没有数据显示在我的datagridview了。我想这可能是因为这个:

dgViewProjects.ItemsSource = Join;

+0

Woups的。我的坏..匹配类中的字段需要是属性。请参阅编辑回答 – Anders

+0

非常感谢您对您的时间和精力表示谨慎,解决了问题! – CareTaker22

回答

0

首先,你可以将其转换你犯了一个类/结构,你希望返回的数据相匹配:

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>

+0

谢谢你的评论!请在我的问题上查看编辑。 :D我需要知道如何将项目绑定到我的数据网格,因为这里没有任何信息显示。 – CareTaker22

0

,如果你想使用结构女巫不是一部分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() ; 
+0

非常感谢您的评论! :) – CareTaker22