Linq对相关表 - 查询

时间:2014-02-12 20:49:15

标签: linq entity-framework entity-framework-5

简化。 EF6

我有两个与PersonId相关的表

 Person
    PersonPK

 FavouriteFood
    PersonFK
    FoodName

我希望得到所有喜欢“西红柿”食物的人

_db.Persons(p=>p.FavouriteFoods(???????))

1 个答案:

答案 0 :(得分:3)

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

var query = _db.Person
               .Where(r=> 
                      r.FavouriteFoods.Any(t => t.FoodName == "Tomatoes"));

如果PersonFavouriteFoods之间没有任何关系,那么您可以从PersonFK获取Distinct FavouriteFood,然后从Person表中获取记录。

类似的东西:

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