2012-08-04 62 views
0

我使用下面的LINQ到實體查詢,一個獨特的現場查詢一次,然後發現在一個單獨匹配的所有記錄(外鍵)屬性的所有記錄:的LINQ to Entities查詢 - 找到相同的字段值

public IEnumerable<User> getUsersInSameCentreAs(String userName) 
{ 
    int? studyCentreId = (from u in _db.Users 
         where u.UserName == userName 
         select u.StudyCentreID).FirstOrDefault(); 
    return (from u in _db.Users 
      where u.StudyCentreID == studyCentreId 
      select u).ToList(); 
    } 

必須有一個乾淨的/單個查詢,它只會查詢一次數據庫以獲得相同的結果,但是我對linq的知識讓我失望 - 任何人都可以看到更好的解決方案。謝謝。

回答

1

子查詢將解決這個問題:

return (from u in _db.Users 
     where u.StudyCentreID == (from u2 in _db.Users 
        where u2.UserName == userName 
        select u2.StudyCentreID).FirstOrDefault(); 
     select u).ToList();