Linq从列表中删除字符串
本文关键字:删除 字符串 列表 Linq | 更新日期: 2023-09-27 18:27:28
当我单击名称列表中的链接时,我希望将其从列表中删除。我搜索了很多关于LINQ的信息,似乎RemoveAll
应该完成这项工作,但当我调用控制器中的Action时,我收到了这个烦人的消息:
传递到字典中的模型项的类型为"System.Int32",但此字典需要类型为的模型项'System.Collections.Generic.IEnumerable `1[System.String]'。
如果我正确地解释了这一点,我将尝试将INT传递给Action方法!?
这是模型中的字符串列表:
public static List<string> listOfNames = new List<string>();
这是html操作链接(我也测试过使用查询字符串):
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink(item, "DeleteNameList", new { Id = item })
</td>
</tr>
}
这是控制器中的操作方法:
public ActionResult DeleteNamelist(string nameToDelete)
{
return View("NameInput", NameModel.listOfNames.RemoveAll(x => x == nameToDelete));
}
您当前的代码正在执行以下操作:
public ActionResult DeleteNamelist(string nameToDelete)
{
int numRemoved = NameModel.listOfNames.RemoveAll(x => x == nameToDelete);
return View("NameInput", numRemoved);
}
这意味着您正在向视图传递int
。你应该这样做:
public ActionResult DeleteNamelist(string nameToDelete)
{
NameModel.listOfNames.RemoveAll(x => x == nameToDelete);
return View("NameInput", NameModel.listOfNames);
}
我认为您的行动价值观不正确。
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink(item, "DeleteNameList", new { nameToDelete = item })
</td>
</tr>
}
之后在控制器中使用:
public ActionResult DeleteNamelist(string nameToDelete)
{
NameModel.listOfNames.RemoveAll(x => x == nameToDelete);
return View("NameInput", NameModel.listOfNames);
}
其他方式:
public ActionResult DeleteNamelist(string nameToDelete)
{
return View("NameInput", NameModel.listOfNames.Where(x => x != nameToDelete));
}