相关表上的 Linq - 查询

Ian*_*ink 2 linq entity-framework entity-framework-5

简化。EF6

我有两个与 PersonId 相关的表

 Person
    PersonPK

 FavouriteFood
    PersonFK
    FoodName
Run Code Online (Sandbox Code Playgroud)

我想要找到所有最喜欢“西红柿”食物的人

_db.Persons(p=>p.FavouriteFoods(???????))
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 5

Person看起来 a和之间存在一对多关系FavouriteFoods,您可以得到如下结果:

var query = _db.Person
               .Where(r=> 
                      r.FavouriteFoods.Any(t => t.FoodName == "Tomatoes"));
Run Code Online (Sandbox Code Playgroud)

Person如果和之间没有关系,那么您可以从 中FavouriteFoods获取 Distinct,然后从表中获取记录。PersonFKFavouriteFoodPerson

就像是:

var query = _db.Person
               .Where(r=> _db.FavouriteFoods
                          .Where(r=> r.FoodName == "Tomatoes")
                          .Select(t=> t.PersonFK)
                          .Distinct()
                          .Contains(r.PersonPK));
Run Code Online (Sandbox Code Playgroud)