繁体   English   中英

从Hashtable复制nk / v对

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM