webForumDet fria alternativet

Få fram ett intervall i hashtabell, sortedlist eller något liknande?

.NET

5 svar · 408 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Är det möjligt att få fram ett interval i en hashtabell, sortedlist eller liknande?
Vi antar att tabellen innehåller:

Nyckel
1
2
3
4
5
6

Det jag skulle vilja få ut är tex intervallet 3-5. I datatabeller finns tex select som man kan använda sig av. Något liknande skulle jag vilja använda mig. Någon som vet?

Medlem sedan aug. 20003 575 inlägg
#2

Tycker att detta inlägget borde ligga i .NET forumet istället för ASP.NET då det inte har någon direkt koppling till ASP.NET. (Plus att jag tycker att det forumet är tomt).

För att svara på din fråga så tror jag tyvärr inte att det går med en HashTable eftersom du där definerar dina egna nycklar så du får nog använda Find, däremot kan du ju ärva av HashTable för att göra en egen metod för detta om nu nycklarna alltid är siffror.

Medlem sedan dec. 20014 239 inlägg
#3

Flyttas från ASP.NET

Medlem sedan maj 20011 312 inlägg
#4

Det finns inte någon annat listobjekt där detta är möjligt som tex en dictionary, sortedlist eller något liknande?

Medlem sedan maj 20012 812 inlägg
#5

Du kan avända många olika listobjekt. Bland annat List().

Om du har en hashtabell så kan du även där lösa problemet genom att kopiera den till en array och sedan plocka ut en delmängd från arrayn. Tror till och med det finns en .CopyTo() metod på hashtablen. Dit problem här är att du inte kan garantera i vilken ordning hashtabellen är när du omvandlar den till en array. Så det är inte säkert att du får samma resultat tillbaka vid olika gånger som det görs.

- M

Medlem sedan dec. 19996 721 inlägg
#6
DictionaryEntry[] entries = new DictionaryEntry[hash.Count];

hash.CopyTo(entries , 0);

DictionaryEntry[] foundEntries=Array.FindAll<DictionaryEntry>(entries, 
                new Predicate<DictionaryEntry>(delegate(DictionaryEntry entry) {
                    return (((int)entry.Key) > 2 && ((int)entry.Key) < 6);
                }));
253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)