sort ArrayList - String

Tags:    asp.net

Hej alle.

Jeg prøver at finde ud af hvordan jeg kan sortere et String ArrayList.
Med følgendene måde ligger jeg ting ind i min ArrayList
Fold kodeboks ind/udCSharp kode 

Men hvordan kan jeg sortere 2 eller flere elementer baseret på hvad der står på plads [0]? Hvis det overhoved er muligt. Grunden til at jeg gerne vil sotere indhold baseret på plads [0] er fordi at den har pladserne 0-7 i hvert StringArray. Og plads 0 har en unik værdi (tal).

Håber nogle kan guide mig i den rigtige retning

Tak på forhånd
Vh



Indlæg senest redigeret d. 26.09.2011 13:30 af Bruger #16700
9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Fra hoften uden at teste:

string[] array = new string[42];
//add to array here
string[] sortedArray = array.OrderBy(x=>x[0])

det skulle gerne fungere, men som sagt er det ikke testet.


**Edit**
Det her virker:

Fold kodeboks ind/udCSharp kode 





Indlæg senest redigeret d. 27.09.2011 10:14 af Bruger #2730
Øhm... Du må lige prøve at forklarer det lidt mere tydeligt. Hvordan vil du sortere dine data?



Hvordan vil du sortere dine data?

Jamen, jeg har et String[] array, så vidt jeg ved. Og i det ligger jeg en String som bliver splittet i 8 dele.
Disse tager jeg så og ligger ind i en ArrayList på plads 0,1,2,3,4,5,6 og 7.

Den værdi der ligger på plads 0 kunne jeg godt tænke mig at sortere på i hele ArrayListen. Da dette er en unik værdi for alle de forskellige Strings.

Giver det mening?



Jeg forstår det heller ikke helt. Nu er det heldigvis kun et array med 8 elementer. Så kan du ikke give et eksempel på de 8 værdier i array'et og hvordan det skal se ud, før og efter sorteringen?



Jeg forstår det heller ikke helt. Nu er det heldigvis kun et array med 8 elementer. Så kan du ikke give et eksempel på de 8 værdier i array'et og hvordan det skal se ud, før og efter sorteringen?


Jeg skal prøve.
String[] 1
placering 0 = id (dette er i tal format f.eks 451)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.1)

String[] 2
placering 0 = id (dette er i tal format f.eks 452)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.2)

String[] 3
placering 0 = id (dette er i tal format f.eks 453)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.3)
o.s.v

Dette er formaten for hver String[]. (se koden i mit første indlæg)
Så kunne jeg godt tænke mig at søge på placering 0 for hver String[] så.
Den String[] med værdien 451 på placering 0 står som nr 0 i ArrayListen. Den med String[] værdi 452 står som nr 1 i ArrayListen. Så de er sorteret efter den laveste til den højeste id



Indlæg senest redigeret d. 26.09.2011 14:25 af Bruger #16700
Kan du ikke bare lave et simpelt eksempel?

F.eks.

Før sortering:

lines[0] = xxxxx1
lines[1] = xxxxx2
lines[2] = xxxxx3
lines[3] = xxxxx4
lines[4] = xxxxx5
lines[5] = xxxxx6
lines[6] = xxxxx7
lines[7] = xxxxx8

Efter sortering:

lines[0] = xxxxx6
lines[1] = xxxxx3
lines[2] = xxxxx5
lines[3] = xxxxx4
lines[4] = xxxxx2
lines[5] = xxxxx1
lines[6] = xxxxx8
lines[7] = xxxxx7

Så kan jeg måske forstå det :-) Skriv også gerne hvad din input streng er, før den bliver splittet.

Typisk vil man implementere en klasse til at arve fra interfacet IComparable, hvilket giver mulighed for at sortere anderledes en array.Sort() normalt ville gøre.






Hej Brian.

Tror vi snakker lidt forbi hinanden :p
String[] 1
placering 0 = id (dette er i tal format f.eks 451)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.1)

String[] 2
placering 0 = id (dette er i tal format f.eks 452)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.2)

String[] 3
placering 0 = id (dette er i tal format f.eks 453)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.3)

Sådan her ^ ville jeg have det skal se ud.

MEN det er muligt at inputtet kan få det til at se ud som følgende
String[] 1
placering 0 = id (dette er i tal format f.eks 451)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.1)

String[] 2
placering 0 = id (dette er i tal format f.eks 453)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.2)

String[] 3
placering 0 = id (dette er i tal format f.eks 452)
placering 1 = navn (f.eks cristian)
placering 2 = land (f.eks Denmark)
placering 3 = tekst1
placering 4 = tekst2
placering 5 = tekst3
placering 6 = tekst4
placering 7 = ip (f.eks 10.0.0.3)

Se placering 0 for hver String[] 1,2 og 3

mit indput kommer fra en fil, hvor jeg indlæser hver linje og så splitter de enkelte linjer yderligere med
Fold kodeboks ind/udCSharp kode 

Et eksempel på indput linjen kunne være 451#placering1#placering2#placering3#placering4#placering5#placering6#placering7
452#placering1#placering2#placering3#placering4#placering5#placering6#placering7
453#placering1#placering2#placering3#placering4#placering5#placering6#placering7

Ved ikke om dette giver mening. Ellers må jeg lige lidt senere poste noget kode der forhåbentlig kan kaste lidt lys over hvad det er jeg prøver at forklare :p

EDIT:
Her er nogle billeder som jeg håber hjælper.
Pga af at brugere kan oprette en ny entry, så kan det ende med at se sådan her ud (Det er Hotel ID som er interessant)
http://imageshack.us/f/607/iplistbilled.png/
hvor hotel id ikke længere er sorteret efter værdi. Fra laveste til største / højeste.

Min ArrayList ser således ud. Her er hver String[] hvor den på placering 0 har id 451, placering 1 har 453 og placering 2 har 452.
http://imageshack.us/photo/my-images/854/billed1.png/
Her er hvad en String[] indenholder.
http://imageshack.us/photo/my-images/854/billed3.png/

Så hele humlen i dette er at jeg godt kunne tænke mig at sortere det på id,et. Fra det laveste tal til det højeste tal. Inde i ArrayListen.

Giver det mening? :p



Indlæg senest redigeret d. 26.09.2011 15:42 af Bruger #16700
Kan ikke se hvad tableList er, men den har muligvis en metode sort der tager en functor.


så noget i retning af det her:
Fold kodeboks ind/udKode 




tablelistthree er en static arrayliste.



t