簡體   English   中英

foreach循環內的LINQ表達式

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM