webForumDet fria alternativet

Sortera en sorteddictionary

.NET

2 svar · 335 visningar · startad av maqe

Medlem sedan dec. 2003824 inlägg
Frågan#1

Jag har en sorteddictionary som jag vill sortera men får inte riktigt till det.

Såhär ser min sorted dictionary ut

new SortedDictionary<string, PropertyDefinition>();

PropertyDefinition har en property "SortOrder" som är en int och på den skulle jag vilja sortera listan, gärna på keyn som andra val om det går? Någon som vet hur man gör detta?

Medlem sedan dec. 19996 721 inlägg
#2

SortedDictionary kan bara sortera på nyckelvärdet. Du får spola över värdena i en List<T> och använda Sort på den.

Dessutom måste du låta PropertyDefinition implementera IComparable

class PropertyDefinition : IComparable
{
  //Din klass

	public int CompareTo(object obj) {
		if(obj is PropertyDefinition) 
		{
			PropertyDefinition def = (PropertyDefinition) obj;
			int result=this.SortOrder.CompareTo(def.SortOrder);
			//Antog att nyckelvärdet även fanns på klassen, med t.ex. namnet "Id"
			if (result==0)
				return this.Id.CompareTo(def.Id);
			return result;
		}
		throw new ArgumentException("object is not a PropertyDefinition");
	}
}

..eller skapa en motsvarande IComparer

Medlem sedan dec. 2003824 inlägg
#3

Ah okay, inte konstigt att jag inte lyckades sortera på något annat än keyn då :)

Tack för hjälpen

308 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
182 ms — ändringar (db)