2012-08-04 72 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();