[英]copy n k/v pairs from Hashtable
我有一个n个记录的哈希表。 我需要复制x和y之间的记录,并遍历它们。
我该怎么做?
例:
HT1.Count = 500;
HT2 = HT1 [0]-HT1 [100];
- 编辑 -
请注意,这样做的原因是我正在从.MSG文件生成PDF。 对于最终用户而言,出现问题是,当他们获得12GB PDF时会引起问题:P
我需要将PDF分解为250条消息,然后启动新的PDF。 因此顺序并不重要,每次返回相同的记录也不会,因为它只会执行一次。
我敢打赌会做这样的自定义功能:
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;
}
}
但是,请考虑到不能保证键的顺序,因此它可以具有无序的对象序列
正如其他人所述,您不能以您想要的方式遍历哈希表。 另一方面,如果您想要的是键在该范围内的结果,则可以执行以下操作:
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
,但是想法是相同的。
我建议您参考哈希表的参考。 哈希表通常是无序的,因此您的问题毫无意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.