C# Linq2sql联接查询以显示名称列表,但仅显示在另一个表中有记录的名称

C# Linq2sql联接查询以显示名称列表,但仅显示在另一个表中有记录的名称,c#,winforms,linq-to-sql,c#-4.0,C#,Winforms,Linq To Sql,C# 4.0,我有一个employee表,目前正在用该表中的名称填充组合框。我还有一个名为expenseHdr的相关表,其中包含员工pk。我的表结构如下所示: employees expenseHdr empPk expPk name expenseType empPk 现在它正在过滤名称,但它正在重复expenseHdr中的每条记录的名称。如何让它只显示每个名称一次?谢谢 var emps = (from emp in db.emplo

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

employees     expenseHdr
empPk         expPk
name          expenseType
              empPk
现在它正在过滤名称,但它正在重复expenseHdr中的每条记录的名称。如何让它只显示每个名称一次?谢谢

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;
您可以使用
Any()

如果表之间没有db关系,您将改为写入:

where emp.active && db.expenseHdrs.Any(exp => emp.pk == exp.empPk)

其中emp.active&&db.expenseHdrs.Any(exp=>emp.pk==exp.empk)如果不使用lambda,这会是什么?emp.active&&(从db.expenseHdrs中的x开始,其中x.pk==exp.empk选择x)。Any()有时lambda较短且优雅,这就是其中之一。改为使用lambda,它较短且可读
where emp.active && db.expenseHdrs.Any(exp => emp.pk == exp.empPk)