L2S:只有特定的回报

时间:2011-06-24 19:56:32

标签: linq-to-sql

我有两个表,称为员工和联系人。

Contacts与EmployeeID上的Employee具有多对一关系。我正在尝试使用Linq-to-Sql检索所有可能存在与其名称存储的联系值集合的员工:

var employee = (from e in db.Employees 
where e.Contacts.Select(x => x.EmployeeID == e.ID) 
select e);

但这不起作用,因为e.Contact.Select(...)会返回IQueryable<bool>而不是bool

我一直在尝试不同的场景,但可以找到一些简单而便宜的东西。

感谢您的帮助。

埃里克

3 个答案:

答案 0 :(得分:1)

试试这个:

var employee = (from e in db.Employees 
where e.Contacts.Any()
select e);

这将选择至少有1个与之相关的联系人记录的所有员工。

请注意,.Select(x => x.EmployeeID == e.ID)是多余的,因为e.Contacts只是与此外键相关的联系人的集合。

答案 1 :(得分:1)

  

可能拥有收藏品的员工   联系人价值

你的意思是:

from e in db.Employees
where e.Contacts.Any()
select e

答案 2 :(得分:0)

试试这个:

var employee = (from e in db.Employees 
where e.Contacts.Select(x => x.EmployeeID).Contains(e.ID) 
select e);