0

请不要在兰巴帮我

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。我很忙,需要一点帮助。再次请不要在兰巴帮我!谢谢

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

1 回答 1

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 连接。

于 2012-07-23T01:40:49.547 回答