LINQ - 如果父计数= 1,则查询子对象

时间:2012-04-17 15:21:29

标签: vb.net linq

我有以下类结构。

Company > List(of Departments) > List(of Employees)

我想查询公司,以确定它是否具有以下名称的部门以及该部门中具有以下ID的员工!

我怎么能查询这个。我有他希望返回一个部门的代码的方式,所以我做了

If Company.Where(function(d) d.Name = 'ABC').First.Where(function(e) e.EmployeeId = 1).Count > 0 

但这会出错  if d.Name = 'ABC'返回0条记录(我希望它返回1或0条记录!)

是否可以在一个linq声明中执行此操作?

2 个答案:

答案 0 :(得分:4)

假设一家公司有多个部门而一个部门有多个员工 - 那么你可以这样做..抱歉我没有使用vb语法:

DB.Departments.Where(d=>d.Name=="ABC").SelectMany(d=>d.Employees).Any(e=>e.EmployeeId == 7)

这将告诉您特定员工是否在任何公司的特定部门名称中。

答案 1 :(得分:2)

var employeeExists = (from company in companies
   where company.Name = expectedCompanyName
   from department in company.Departments
   from employee in department.Employees
   where employee.Id == expectedEmployeeId
   select employee.Id).Any()