我有一个MVC Web应用程序,其中包含多个选项,允许用户可以使用多个选项来过滤数据。例如:汽车数据库,用户可以通过品牌,颜色和身体样式进行选择。可能的搜索是(红色或蓝色)和(雪佛兰或福特)和(SUV)。我将我的viewmodel中返回的所有选择作为字符串数组,并且所有选择都正确地返回到我的控制器。我的Color数组有'Red'和'Blue',Model数组有'Chevy'和'Ford',BodyStyle数组有'SUV'。现在我已将模型发布到控制器,如何构建linq语句,允许这些条件空白或包含多个选择?
型号:
public class SearchViewModel
{
public string[] Model { get; set; }
public string[] Color { get; set; }
public string[] Body { get; set; }
}
控制器:
public ActionResult Search(SearchViewModel search)
{
//TODO: Create linq for all search criteria
List<Cars> cars = db.Cars.Where(car => car.Model == search.Model[0]);
return View(cars);
}
答案 0 :(得分:1)
var list = new List<string> { "red", "orange"};
from c in DB.Cars
where list == null || list.Contains(c.Color)
select c;