簡體   English   中英

如何從列表中刪除特定對象<T>

[英]How to remove a specific object from a List<T>

因此,我去了一個列表,其中存儲了使用鏈接和類別構造的Feed對象。 現在,我要刪除具有特定鏈接和類別的給定Feed對象。

我的清單的聲明:

public void addFeed(String link, String cat) {
    linkAcategory.Add(new feed(link, cat));
}

增加功能:

public void addFeed(String link, String cat) {
    linkAcategory.Add(new feed(link, cat));
}

刪除功能不起作用,但顯示了我要執行的操作:

public void removeFeed(String link, String cat) {
    linkAcategory.Remove(new feed(link,cat));
}

希望我能在這里得到任何有價值的幫助。 提前致謝。

假設T對象具有link和cat屬性:

linkAcategory.RemoveAll(x=>x.link==link && x.cat==cat);

List對象為您提供了三種刪除其元素的方法。

  1. 按lambda條件刪除所有元素

  2. 按索引刪除特定元素

  3. 自行刪除特定元素

例如

List<int> myList = new List<int>()
            {
                2,
                1,
                3,
                1
            };

 myList.Remove(1);// Delete 1-element from the index 1
 myList.RemoveAt(0);// Delete 2-element from the index 0
 myList.RemoveAll(x => x == 1);// Delete all elements that equal to 1

通過編寫removeFeed方法的方式,您的Feed類應覆蓋Equals方法。 類似於以下內容:

    public class Feed
    {
        private string link;
        private string cat;

        …

        public override bool Equals(object obj)
        {
            if (obj == null) return false;

            var other = obj as Feed;
            if (other == null) return false;

            return other.link == this.link && other.cat == this.cat;
        }
    }

這是因為ListRemove方法使用其元素的Equals方法。

如果要將某些屬性設為私有,則可以選擇這種方法。 這樣,調用類唯一需要知道的就是Equals方法。 它不必知道確定相等性的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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