簡體   English   中英

從通用列表中刪除項目

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

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