[英]LINQ expression inside foreach loop
在我的View()中,我有许多带有attr name =“ types”的复选框。 在我的ActionResult中,我有一个类似参数的List类型,并且执行foreach循环以搜索List,每个类型ID并在LINQ表达式中添加Where()过滤器。 如果我选择许多类型,则返回的结果只是一种,而不是我选择的所有结果。 看:
[HttpPost]
public ActionResult Index(List<int> types) {
var variable = from s in MyViewModel select s;
foreach(var type in types) {
variable = variable.Where(x => x.TypesId == type);
}
return View(MyViewModel);
}
还有另一种方法吗?
谢谢!!
variable = variable.Where(x => types.Contains(x.TypesId));
这应该为您提供所有值,如果只需要一个,请在末尾添加.FirstOrDefault()
您的代码中几乎没有问题,无论代码的其他什么部分,您的return语句始终返回所有MyViewModel
集合。
另一个问题是循环中的代码将覆盖variable
。
我认为,这就是您所需要的。
return View(MyViewModel.Select(s=> types.Any(t=>t.type == s.TypesId));
将属性名称从name =“ types”更改为name =“ types []”
它将发布选定值的数组
的variable
正在重置每个foreach
迭代。 创建一个List
并将其添加到foreach
块中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.