如何遍历并删除Dictionary集合内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何遍历并删除Dictionary集合内容相关的知识,希望对你有一定的参考价值。

参考技术A   在遍历数据结构的时候,是不可以修改原数据结构的。不然就会抛出错误。

  我常用的解决办法是做一份拷贝,遍历这个拷贝。(如果数据不是很大的话)

  比如,这个代码:

  C#代码
  1.<SPAN style="FONT-SIZE: x-small">IDictionary<int, string> ht = new Dictionary<int, string>();
  2.ht.Add(1, "one");
  3.ht.Add(2, "two");
  4.
  5.// Print "one,two"
  6.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));
  7.
  8.foreach (int key in new List<int>(ht.Keys))
  9. if (key == 1) ht.Remove(key);
  10.
  11.
  12.// Print "two"
  13.Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));</SPAN>
  IDictionary<int, string> ht = new Dictionary<int, string>();
  ht.Add(1, "one");
  ht.Add(2, "two");

  // Print "one,two"
  Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));

  foreach (int key in new List<int>(ht.Keys))
  if (key == 1) ht.Remove(key);
  

  // Print "two"
  Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray())); 我在遍历的时候,做了一份拷贝。代码是 new List<int>(ht.Keys),用到了 List 的构造拷贝函数,

  会对 ht.Keys 做一份拷贝。之后的 foreach 其实是在对这个拷贝做遍历。
转载
guojian3021886本回答被提问者和网友采纳

循环删除Dictionary集合中为空的Key,其他集合均可改造

/// <summary>
/// 移除为空的Key
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
private static Dictionary<string, string> RemoveNullKey(Dictionary<string, string> dic)
{
string keyNames = "";
foreach (string key in dic.Keys)
{
if(string.IsNullOrEmpty(dic[key]))
{
keyNames += key + ",";
}
}
string[] str_keyNames = keyNames.Split(new char[] { ‘,‘ }, StringSplitOptions.RemoveEmptyEntries);

foreach (string key in str_keyNames)
{
dic.Remove(key);
}
return dic;
}

以上是关于如何遍历并删除Dictionary集合内容的主要内容,如果未能解决你的问题,请参考以下文章

dict遍历的时候删除dict中的值报错RuntimeError: dictionary changed size during iteration

Python面试题目之(针对dict或者set数据类型)边遍历 边修改 报错dictionary changed size during iteration

c# 怎么把数据库某个表的内容加到dictionary字典中?

Python中如何以dict的key排序输出?

Python中如何以dict的key排序输出?

Python学习-dictionary字典