[英]remove item from a list
我有對象Card
public class Card {
public int ID { get; set; }
public string Name { get; set; }
public Color CardColor { get; set; }
public int Size { get; set; }
}
而且我有Card
清單。 我想從ID
不同但其他屬性相同的列表中刪除Card
。
cardList.Remove(mycard);
不管用。
通過比較名稱(或其他名稱)在列表中找到匹配的項目,然后將其刪除。
例如:
var toRemove = cardList.SingleOrDefault(c => c.Name == mycard.Name);
if (toRemove != null) cardList.Remove(toRemove);
您應該重寫Equals方法。 刪除使用等於評估卡是否是您要刪除的卡片。 因此在Card類中使用邏輯來覆蓋它,以評估兩張卡是否相等。
foreach(var card in cardList)
{
var cardsMatching =
cardList.All(x=>x.Name==card.Name&&x.Color==card.Color&&x.Size==card.Size);
cardsMatching.Foreach(y=> {
cardList.Remove(cardList.IndexOf(y));
});
}
根據您要實現的目標,您可能希望首先阻止具有相同ID的卡插入。
有兩種簡單的方法:
將集合與比較器一起使用,例如:
public class CardComparer : IEqualityComparer<Card> { public bool Equals(Card x, Card y) { return x.ID == y.ID; } public int GetHashCode(Card obj) { return obj.ID; } } var hash = new HashSet<Card>(new CardComparer());
使用ID為關鍵字的字典:
var dict = new Dictionary<int, Card>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.