2012-04-17 10 views
2

私は以下のクラス構造を持っています。私はそれが次の名前と、以下のIDとその部門の従業員の部門を持っているかどうかを確認するために会社を照会するLINQ - 親子数が1の場合の子オブジェクトの照会

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

これをどのようにクエリできますか。私はそれが私はそれが

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

をやっているので、1つの部門を返すことを期待コードを持っている。しかし、これは if d.Name = 'ABC'を返す0レコードを(私はそれが1つのまたは0のレコードを返すことを期待!)

をエラーになります方法です1つのlinqステートメントでこれを行うことは可能ですか?

答えて

4

会社が複数の部門があり、部門が複数employees--を持って、あなたはこれを行うことができると仮定して...申し訳ありませんが、私は、VBの構文を使用していないよ:

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

特定の従業員ならば、これはあなたを言うだろういずれの会社でも特定の部門名になっていました。

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() 
関連する問題