在Linq为每个人做一些小事

时间:2012-01-20 04:33:58

标签: linq

我有一个小问题,我需要一些帮助。我有一个餐馆对象,其中包含:fieldsId,dishId,foodCategoryId和restaurantName。

根据我的下面的代码,我需要检查来自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 个答案:

答案 0 :(得分:1)

您可以使用Contains()

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

您还想使用||(逻辑OR)而不是|(二进制OR)