Avatar billede glenn007 Nybegynder
21. januar 2009 - 22:06 Der er 9 kommentarer og
1 løsning

sorter en tal række

hejsa

har min  række med tal som kan se sådan ud..


string results = "18,10,18,10,18";

og vil gerne have den vendt så den ser således ud ( tal sorteret efter størrelse små til store ) hvordan kan man gøre det jeg er

string results = "10,10,18,18,18";

kan man

foreach (string x in results)
{
og på en eller anden måde sætte det i et array her...
}


jeg ved ikke rigtigt hvordan jeg skal gribe det an.

nogen eksempler i jeres gemakker
Avatar billede arne_v Ekspert
21. januar 2009 - 22:32 #1
Split string i array af string, konverter til array af int, sorter, konverter til
array afs tring, konkataner til enkelt string.

Hvis du foretraekker kort kode, saa:

string results = "18,10,18,10,18";
results = string.Join(",", results.Split(',').Select(s => int.Parse(s)).OrderBy(v => v).Select(v => v.ToString()).ToArray());
Avatar billede glenn007 Nybegynder
21. januar 2009 - 23:10 #2
hej igen det er super godt.Det virker jo  men jeg kan ikke forstå hvor det egenligt er du siger den skal sortere det descending eller assending. jeg kan ikke gennemsku hvad der gør hvad kan jeg lokke dig til at kommenterer hvad der sker der.

er stadigt meget ny med det her
Avatar billede glenn007 Nybegynder
21. januar 2009 - 23:44 #3
det jeg fisker efter er at forstå hvor i den kode du fortæller den du vil se et output der hdder 10,10,18,18,18 som den kode giver. Hvad så hvis man vil have den til at gøre det omvendt 18,18,18,10,10
??? hvis jeg vender større og mindre tegnene om giver den bare fejl.
Avatar billede glenn007 Nybegynder
21. januar 2009 - 23:59 #4
har fundet ud af det ,  tak for hjælpen, er du sød at smide et svar til point.


fik læst mig frem til at der var en OrderByDescending også, jeg troede umiddelbart det var større elelr mindre tegnene der afgjorde udfaldet. :)

tak
Avatar billede arne_v Ekspert
22. januar 2009 - 00:26 #5
svar
Avatar billede arne_v Ekspert
22. januar 2009 - 00:27 #6
=> er sådan en lambda "returner dette her"
Avatar billede glenn007 Nybegynder
22. januar 2009 - 01:26 #7
kan du evt. guide mig i hvordan man bagefter kan sortere så det tal der er flest gange med ligger først i string results = "18,10,18,10,18";
der er det der hedder group by såvidt jeg kan forstå.
Avatar billede glenn007 Nybegynder
22. januar 2009 - 01:31 #8
nu giver det sig selv med results = "18,10,18,10,18";  men hvis resultat listen er  18,23,23,34  vil  23 altidligge i midten når man bruger descenndin osv  måske man kan blande det lidt så man først sortere descending og derefter tager det flest gange nævnte tal og ligger forest
Avatar billede arne_v Ekspert
22. januar 2009 - 04:21 #9
Jeg tror ikke at GroupBy duer her.

Prøv:

string results = "18,23,23,34";
int[] a = results.Split(',').Select(s => int.Parse(s)).ToArray();
results = string.Join(",", a.OrderBy(v => a.Count(v2 => v2==v)).Select(v => v.ToString()).ToArray());
Avatar billede arne_v Ekspert
22. januar 2009 - 04:34 #10
Du skulle nok  iøvrigt overveje et andet format at opbevare data i.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester