[英]Removing item from a Generic List
我正在尝试从绑定到转发器控件的Generic List
删除一个项目。
到目前为止,我已经有了一个应该可以正常工作的删除方法(在检查完interweb之后):
Label lblMemberName = (Label)e.Item.FindControl("lblMemberName");
switch (e.CommandName)
{
case "RemoveMember":
foreach (challenge.Member member in Members.Where(member => member.Name == lblMemberName.Text))
{
//This line doesnt work
Members.Remove(member);
}
break;
}
不幸的是,这种情况下的实际删除工作不起作用。
我了解您无法创建要删除的List<>
的new
实例。 因此,这就是为什么我使用Linq
语句查找以前的详细信息的原因。
我在做什么错,怎么可能?
如上所述,您不能在迭代集合时修改集合的内容。
您也可以尝试List(T).RemoveAll() 。 请参考LINQ:如何在不使用For循环和Array的情况下使用RemoveAll 。 这是比其他列表更简洁的解决方案。
修改要遍历的列表是非法的。 但是,您可以将其转换为for循环而不是foreach,然后进行修改。
for (int i=0; i < Members.Count; i++)
{
if (Members[i].Name == lblMemberName.Text)
Members.RemoveAt(i--); // decrement because we just shrunk the list)
}
获取会员:
var member = Members.FirstOrDefault(i=>i.Name.Equals(thename));
然后将其从列表中删除:
if (member != null)
{
Members.Remove(member);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.