Question

J'ai un Hashtable avec un nombre n de dossiers. Je dois copier les enregistrements entre x et y et itérer à travers eux.

Comment puis-je faire?

Exemple:

HT1.Count = 500;

HT2 = HT1 [0] - HT1 [100];

- modifier -

Juste pour que vous le savez, le raisonnement est pour ce que je suis générer des PDF à partir de fichiers .MSG. Le problème se pose pour l'utilisateur final que quand ils obtiennent un 12Go PDF il provoque des problèmes: P

Je dois briser les PDF dans des messages de 250, puis commencer un nouveau PDF. Donc, pour ne pas vraiment, ni ne retournant les mêmes enregistrements chaque fois, car il ne sera fait une fois.

Était-ce utile?

La solution

Mon pari serait en train de faire une fonction personnalisée comme ceci:

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;
    }
}

Cependant, tenir compte du fait que l'ordre des clés est pas garantie, donc cela peut avoir une séquence non ordonnée d'objets

Autres conseils

Comme d'autres l'ont dit, vous ne pouvez pas itérer sur une table de hachage de la façon dont vous semblez vouloir. Si, d'autre part, ce que vous voulez est le résultat lorsque les touches sont dans cette gamme, vous pouvez faire quelque chose comme ceci:

    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;
    }

Notez que je suis en utilisant la version générique (Dictionary) au lieu de l'ancien Hashtable, mais l'idée serait le même.

Je vous suggère de consulter une référence sur les tables de hachage. Les tables de hachage sont généralement non ordonnée, de sorte que votre question n'a pas de sens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top