[英]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.