0

我有一个员工表,我目前正在用该表中的名称填充组合框。我还有一个名为expenseHdr 的相关表,其中包含员工pk。我的表结构如下所示:

employees     expenseHdr
empPk         expPk
name          expenseType
              empPk

现在它正在过滤名称,但它正在重复其在费用 Hdr 中的每条记录的名称。我怎样才能让它只显示每个名字一次?谢谢!

var emps = (from emp in db.employees
                        join exp in db.expenseHdrs on emp.pk equals exp.empPk
                        where emp.active == true 
                        orderby emp.name
                        select emp.name.Substring(0, 20)).ToList();
            cboEmployee.DataSource = emps;
4

1 回答 1

2

您可以使用Any()

var emps = (from emp in db.employees
                        where emp.active && emp.expenseHdrs.Any()
                        orderby emp.name
                        select emp.name.Substring(0, 20)).ToList();
            cboEmployee.DataSource = emps;

如果表之间没有数据库关系,您将改为编写:

where emp.active && db.expenseHdrs.Any(exp => emp.pk == exp.empPk)
于 2012-05-05T16:59:40.630 回答