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