在实体框架中,如何在连接表上执行“IN”查询?

时间:2012-04-23 21:46:45

标签: c# sql linq entity-framework

我是一个SQL迷​​,而EF的语法对我来说并不直观。

我有一张餐桌和一张食物桌。我想要食物有类型的餐馆和食物包含在字符串列表类别中。这是一些大致代表我想要的SQL。

SELECT r.*, f.*
FROM Restaurant R
  JOIN food f on f.RestaurantID = r.RestaurantID
WHERE f.Type IN ("Awesome", "Good", "Burrito")

这是我想要变成SQL的代码。

List<string> types = new List<string>() { "Awesome", "Good", "Burrito"};
var dbrestaurants = from d in db.Restaurants
                    .Include("Food")
                    //where Food.Categories.Contains(types)//what to put here?
                    select d;

3 个答案:

答案 0 :(得分:1)

尝试

var restaurants = db.Restaurants.Where(r => types.Contains(r.Food.Type));

答案 1 :(得分:0)

where Food.Categories.Any(c => types.Contains(c.Name))

答案 2 :(得分:0)

试试这个:

var dbRestaurants = 
from r in db.Restaurants
join f in db.Foods on r.RestaurantId equals f.RestaurantId
where types.Any(foodType => foodType == f.Type)
select r;