【问题标题】:MVC Linq for multiple selects that allow multiple selections多选的 MVC Linq 允许多选
【发布时间】:2014-08-04 20:00:48
【问题描述】:

我有一个带有多个选择的 MVC Web 应用程序,允许用户使用多个选择来过滤数据。例如:一个汽车数据库,用户可以在其中按品牌、颜色和车身样式进行选择。可能的搜索是 (Red OR Blue) AND (Chevy OR Ford) AND (SUV)。我将视图模型中的所有选择作为字符串数组返回,并且所有选择都正确返回到我的控制器。我有带有“Red”和“Blue”的 Color 数组,带有“Chevy”和“Ford”的 Model 数组以及带有“SUV”的 BodyStyle 数组。现在我已将模型发布到控制器,如何构造允许这些条件为空白或包含多个选择的 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);
}

【问题讨论】:

  • 你能给我们一个你想要执行 LINQ 的数据样本吗?
  • 欢迎来到 Stack Overflow。您对您正在尝试做的事情有很好的描述,但没有提供任何代码。请花一分钟阅读Help Center > Asking > How do I ask a good question?。这将使您和试图帮助您的人受益。

标签: c# asp.net-mvc linq


【解决方案1】:
var list = new List<string> { "red", "orange"};

    from c in DB.Cars
    where list == null || list.Contains(c.Color)
    select c;

【讨论】:

  • 当我尝试 'db.Cars.Where(car => search.Color== null || search.Color.Contains(car.Color)).ToList();'检查 null 时出现错误:无法比较“System.Collections.Generic.List`1”类型的元素。仅支持原始类型、枚举类型和实体类型。
  • 我在 SearchViewModel 中初始化我的列表并检查列表计数是否为零: List cars= db.Car.Where(car => search.Color.Count == 0 || search. Color.Contains(car.Color)).ToList();
猜你喜欢
  • 2018-01-23
  • 2018-01-12
  • 2016-07-07
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多