【发布时间】:2012-07-23 01:01:11
【问题描述】:
请不要在兰巴帮我帮忙
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;
}
}
}
【问题讨论】:
-
如果您的关系设置正确,您永远不必直接处理 PK。
-
您的加入应该是
on m.pk equals t.empPk。另外,我没有在winforms中工作过,但是你不能在列表框中存储值和文本吗?这样您就可以避免mgr查询,只需将列表框选定值传递给emps查询。 -
选定的管理器是组合框而不是列表框。我修复了我的equals,但它仍然无法正常工作。我想我还缺少一条线......
标签: c# winforms c#-4.0 linq-to-sql