作为搜索页面的一部分,我允许用户使用KendoUI Multiselect小部件对特定搜索字词进行多选。集合中的这些项目作为参数传递给我的控制器。我的问题是,在我将它们传递给我的控制器后,我该如何使用它们?更具体地说,我如何在使用Contains方法的Where语句中使用它们。
这是我的多选小部件的代码
@(Html.Kendo().MultiSelect()
.Name("vessel_type")
.Placeholder("Select Type")
.BindTo(new List<string>() {
"AHTS",
"PSV",
"Special"
}))
这是我的控制器代码,它使用vessel_type作为参数
public ActionResult Search(IEnumerable<string> vessel_type)
{
var vessels = (from o in db.vessels
select o);
vessels = vessels.Where(s => s.vessel_type.Contains(vessel_type));
return PartialView("_results", vessels);
}
这条线是不正确的,因为它期待一个字符串,但我有一个mroe而不是一个集合:
vessels = vessels.Where(s => s.vessel_type.Contains(vessel_type));
由于
答案 0 :(得分:2)
如果我正确理解了这个问题,我相信您需要反过来执行检查,即检查vessel_type
集合是否包含容器的类型:
vessels = vessels.Where(s => vessel_type.Contains(s.vessel_type));
此处Contains
是IEnumerable<T>
上的扩展方法。
在旁注中,由于参数代表一个集合,我认为复数名称更合适,例如vessel_types
。