webForumDet fria alternativet

Sortera en sorteddictionary

2 svar · 335 visningar · startad av maqe

maqeMedlem sedan dec. 2003824 inlägg
#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?

emissionMedlem 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

maqeMedlem 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

158 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)