2012-01-20 5 views
0

У меня есть небольшие проблемы с ребятами, которым мне нужна помощь. У меня есть объект ресторана, который имеет поля: districtId, dishId, foodCategoryId и имя ресторана.Выполнение некоторых незначительных для каждого в Linq

Основываясь на моем коде ниже, мне нужно проверить из параметра входного параметра массива DistrictId, если он имеет соответствие в таблице RestaurantTable. У меня есть идея, я должен использовать

districtId.ToList().Foreach(blah blah action) 

, но я с трудом использую его. Пожалуйста, порекомендуйте. Заранее спасибо.

Мой фрагмент кода:

public IEnumerable<Restaurant> GetAllRestaurants(string restaurantName 
     , int[] districtId 
     , int dishId = 0 
     , int foodCategoryId = 0) 
    { 

var q = RestaurantTable.Where(restaurants => restaurants.RestaurantName.Contains(restaurantName.ToLower().Trim()) 
               | restaurants.DishId == dishId 
               | restaurants.FoodCategoryId == foodCategoryId 
| "For each Id's in districtId check if it has a match in restaurants.DistrictId") 

return q.ToList(); 
} 

ответ

1

Вы можете использовать Contains():

var q = RestaurantTable.Where(restaurant => restaurant.RestaurantName.Contains(restaurantName.ToLower().Trim()) 
           || restaurant.DishId == dishId 
           || restaurant.FoodCategoryId == foodCategoryId 
           || districtId.Contains(restaurant.DistrictId)) 

Также вы хотите использовать || (логическое ИЛИ) вместо | (двоичное ИЛИ)

+0

благодарит за ответ, позвольте мне попробовать этот. если можете, можете ли вы объяснить эту часть? Или я исправлю, если районId содержит какой-либо из ресторанов.DistrictId, он вернется? – grayman

+0

yey! это сработало! еще раз спасибо: D – grayman

Смежные вопросы