[英]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對象為您提供了三種刪除其元素的方法。
按lambda條件刪除所有元素
按索引刪除特定元素
自行刪除特定元素
例如 :
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;
}
}
這是因為List的Remove方法使用其元素的Equals方法。
如果要將某些屬性設為私有,則可以選擇這種方法。 這樣,調用類唯一需要知道的就是Equals方法。 它不必知道確定相等性的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.