如何做到Linq-to-Sql加入?

时间:2012-07-23 01:01:12

标签: c# winforms c#-4.0 linq-to-sql

请不要给我lamba的帮助

I have two tables. 
Employees:   
pk           
name        

ExpenseTeamMembers: 
pk                        
expMgrPk
empPk

Example: pk      expMgrPk     empPk     
     1         7          81
     2         7          101
     3         13         99
     4         13         22
     5         13         56

基本上,第一个表是员工列表,第二个表是用于跟踪哪些员工属于哪个经理的表。

第一次sql查找工作,mgr让我得到组合框中所选名称的pk。

我在联接中尝试做的是查找expMgrPk并查看哪些员工属于它并返回他们的名字而不是他们的pk。我很漂亮,需要一些帮助。再次请不要给我lamba帮助!!感谢

    private void cboManagers_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cboManagers != null)
        {
            string selectedMgr = (string)cboManagers.SelectedValue;

            using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
                int mgr = (from f in db.employees
                          where f.name == selectedMgr
                          select f.pk).FirstOrDefault();

                var emps = (from m in db.employees
                            join t in db.expenseTeamMembers on m.pk equals t.pK
                            where t.expMgrPk == mgr
                            select m.name).ToList();
                lstSelected.DataSource = emps;
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

在linq-to-sql中,您可以通过编写两个from语句并结合where语句来更轻松地编写联接。像这样:

var emps = (from f in db.employees
            from m in db.expenseTeamMembers
            where m.pk == mgr && f.pk == m.empPk
            select f.name).ToList();

我发现这种语法更容易,编译代码时,查询将转换为传统的T-SQL连接。