假设我有一个词汇
public Dictionary<int, List<string>> dict = new Dictionary<int, List<string>>();
键 - 1,...,n
现在我想要删除让我们说第5个元素,但想要保持正常的计算。
要有1,2,3,4,5,6,7,8,9 .... 而不是1,2,4,6,7,8,9 ...... ....
怎么做?
答案 0 :(得分:0)
您可以定义此实用程序方法:
public static IDictionary<int, T> RemoveItem<T>(IDictionary<int, T> dict, int key)
{
return dict.Where(kv => kv.Key != key)
.ToDictionary(kv => kv.Key > key ? kv.Key - 1 : kv.Key,
kv => kv.Value);
}
然后就这样称呼它:
var twoRemoved = RemoveItem(dict, 2);
请注意,这不会修改原始词典对象,但会在key
向下移动1并且删除键值为key
的原始项目后创建一个新的词典对象。
这是 修改原始字典的版本,可能会提供更好的性能和内存使用情况:
public static void RemoveItem2<T>(IDictionary<int, T> dict, int key)
{
dict.Remove(key);
T item;
while (dict.TryGetValue(++key, out item))
{
dict.Remove(key);
dict[key - 1] = item;
}
}