我有一个包含n条记录的哈希表。我需要复制x和y之间的记录并迭代它们。
我该怎么做?
示例:
HT1.Count = 500;
HT2 = HT1 [0] -HT1 [100];
- 编辑 -
您知道这一点的原因是我从.MSG文件生成PDF。最终用户遇到的问题是,当他们获得12GB的PDF时会导致问题:P
我需要将PDF分解为250的消息,然后启动一个新的PDF。因此,顺序并不重要,每次都不会返回相同的记录,因为它只会执行一次。
答案 0 :(得分:2)
我的赌注是做一个这样的自定义函数:
public IEnumerable<object> GetRange(Hashtable ht, int min, int max) {
int i = 0;
foreach (var key in ht.Keys) {
i++;
if (i > max) {
yield break;
}
if (i >= min) {
yield return ht[key];
} else continue;
}
}
但是,请注意不能保证键的顺序,因此这可能有一个无序的对象序列
答案 1 :(得分:1)
正如其他人所说,你不能以你想要的方式迭代哈希表。另一方面,如果您想要的是键在该范围内的结果,您可以执行以下操作:
public IDictionary<int, T> GetRange<T>(
IDictionary<int, T> source, int min, int max)
{
// add error checking for min,max, null, etc...
int capacity = Math.Max(0, max - min);
Dictionary<int, T> target = new Dictionary<int, T>(capacity);
for (int key = min; key < max; key++)
{
if (source.ContainsKey(key))
{
target.Add(key, source[key]);
}
}
return target;
}
请注意,我使用的是通用版本(Dictionary
)而不是旧Hashtable
,但这个想法是一样的。
答案 2 :(得分:0)
我建议您查阅有关哈希表的参考资料。哈希表通常是无序的,所以你的问题毫无意义。