[英]Removing items found in another list
我有兩個列表,它們分別命名為:currentItems和newItems。 newItems包含在currentItems中找到的項目,在輸出列表之前,我嘗試使用這些項目。
我做了一些搜索,並嘗試使用:
var newList = newItems.Except(CurrentItems).ToList();
但是當我查看輸出時,仍然可以從列表中的currentItems中找到項目。 當我遇到這個問題時,我找到了這個例子:
這與我要達到的目標類似,但問題的所有答案均不適用於我。
我嘗試使用:
List<ListItem> newList = newItems.Union(CurrentItems).ToList();
但是我認為我在錯誤的情況下使用了它,因為我試圖將其從列表中完全刪除。
我也嘗試過在兩個循環之間循環,但是我不相信這樣做會盡可能高效。
在第一個示例中,我可能做錯了什么? 還是有其他方法可以實現我的目標?
IEnumerable.Except
將做您想要的,但是它使用默認的相等比較器。 對於自定義對象,您將需要實現Equals
和GetHashCode
還要注意,如果newItems具有重復的值IEnumerable.Except
也會在您的列表上做不同的事情。
EDIT2:您需要一個相等比較器來比較ListItem的可信度。
您需要傳入一個自定義比較器,該比較器僅比較ListItem
的Value
屬性。
var newList = newItems.Except(currentItems, new ListItemValueComparer());
自定義相等比較器在這里...
class ListItemValueComparer : IEqualityComparer<ListItem>
{
public bool Equals(ListItem x, ListItem y)
{
return x.Value.Equals(y.Value);
}
public int GetHashCode(ListItem obj)
{
return obj.Value.GetHashCode();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.