我是C#的初学者..我的情况是我有
的字典var enteries = new Dictionary<int, Entry>();
我正在通过
迭代它foreach (KeyValuePair<int, Entry> entry in enteries)
我有一个hashset<int>
,其中包含1,2,3等所有键。有时字典缺少一个键,我怎么知道我在字典中错过了当前在字典中迭代的键?
基本上我尝试编写CVS文件,我需要知道是否缺少密钥,以便我可以为该id写一些空行。 我也希望对事情进行排序..
看起来有一个误解:
Suppose enteries have keys, 238, 260
hashset has 238,260,250
当我遍历字典中的每个键,对,有一个缺失的元素,即250,我将如何输出,我应该输出一些例子。
答案 0 :(得分:0)
我怎么知道我正在迭代的当前密钥 hashset中缺少字典?
假设您有一个HashSet<int> hashSet
实例,您可以使用Contains
方法来确定此哈希集中是否包含整数值并采取相应措施:
HashSet<int> hashSet = ...
foreach (KeyValuePair<int, Entry> entry in enteries)
{
if (hashSet.Contains(entry.Key))
{
// The current key is contained within the hashSet
}
else
{
// The current key is not contained within the hashSet
}
}
答案 1 :(得分:0)
改变你的观点。 据我所知,在你的HashSet中是每个需要的密钥。因此,遍历HashSet并找到Dictionary中每个HashSet-Entry的键。
答案 2 :(得分:0)
最简单的代码不是最有效的,但会起作用;将一组键合并在一起,然后迭代:
foreach (int key in enteries.Keys.Union(yourHashSet)) {
Entry entry;
if (enteries.TryGetValue(key, out entry)) {
// The key is in the dictionary; the entry variable contains the value.
} else {
// The key is not in the dictionary.
}
}
如果要对键进行排序,只需在union之后应用此操作:
foreach (int key in enteries.Keys.Union(yourHashSet).OrderBy(i => i)) {