我有類型的集合:
Iesi.Collections.Generic
無法從Iesi.Collections.Generic的ISet刪除項目<T>
public ISet<ItemBinding> ItemBindings { get; set; }
其中ItemBinding
是Domain.Model
我以這種方式初始化集合:
ItemBindings = new HashedSet<ItemBinding>();
我用成員填充集合。
當我想從這個集合中刪除一個項目時,我無法刪除它。
private void OnRemove(ItemBinding itemToRemove) {
ItemBindings.Remove(itemToRemove);
}
即使是itemToRemove
具有相同hashCode
從收集的項目。
我也試圖找到該項目的收集,保存在一個變量,並將其刪除:
private void OnRemove(ItemBinding itemToRemove) {
var foundItem = ItemBindings.Single(x => x.Id == itemToRemove.Id); // always if found
ItemBindings.Remove(foundItem);
}
但這不起作用。
該工程確定的解決方法是這樣的:
private void OnRemove(ItemBinding itemToRemove) {
var backUpItems = new List<ItemBinding>(ItemBindings);
backUpItems.Remove(itemToRemove);
ItemBindings.Clear();
ItemBindings.AddAll(backUpItems);
}
但這是一個骯髒的解決方法。我試圖做到這一點簡單刪除在一個優雅的方式:)。
更改類型
如果我改變ISET和在IList中它工作正常的類型。
public IList<ItemBinding> ItemBindings { get; set; }
ItemBindings = new List<ItemBinding>();
當我想從這個集合中刪除一個項目時,它被刪除了。
private void OnRemove(ItemBinding itemToRemove) {
ItemBindings.Remove(itemToRemove);
}
我失蹤的方式,我不能從ISet刪除項目...?
謝謝你的建議,解決方案。
有人遇到過這樣的問題? – meorfi
我們有同樣的問題,對IList的改變正在爲我們工作! – lxalln
什麼價值的HashSet卸下襬臂()的返回 - 如果去掉這些對象存在並且已經被移除,它應該返回TRUE,或FALSE如果項目不能被發現。你的情況如何? –
PhillipH