12. februar 2008 - 10:25Der er
5 kommentarer og 1 løsning
Finde værdi i dataset
Jeg har en række værdier i et dataset, lad os sige 20,40,50,60 En bruger taster et tal ind i en formular. f.eks 36 Hvis vedkommende havde tastet 40, så ville jeg vide at tallet 40 lå på index[1]'s plads, men nu har han tastet 36, så vil jeg gerne have finde værdien 40 i datasettet. Taster vedkommende 44 så skal den springe til 50 osv.
tror ikke det er helt nok.. jeg kan i hvertfald ikke lige vende det rigtigt i mit hoved :D du/I får lige hele forklaringen :)
jeg har to arraylists - en med nogle bredder og en med nogle højder Når en person taster et tal ind f.eks 40 som findes i arraylisten, så finder jeg positionen vha indexOf.. så bliver resultatet 0 hvis det ligger først i arraylisten Det samme gør jeg med højden. Tilsammen danner de positionen som min værdi ligger på i datasettet.
Så til sidst skriver jeg værdien i datasettet ud med: vaerdi = ds.Tables[0].Rows[0][0].ToString();
Problemet opstår jo så hvis brugeren på hjemmesiden ikke taster en værdi der ligger i hhv. den ene eller den anden arraylist. Så skal jeg have fundet den værdi der ligger tættest på det brugeren har skrevet.
Hvis din liste indeholder eks. 20, 40, 50, 60 og personen taster 36, vil du have den til at returnere 40, right?
Kunne du loope igennem din liste sådan her:
//Finder index af nærmeste værdi under antagelse af at listen er sorteret fra //mindst til størst. private static int GetNearestIndex(int target, List<int> list) { int diff = int.MaxValue; //Størst mulig forskel fra start. int nearestIndex =-1;
for (int i = 0; i < list.Count; i++) { int tempDiff = Math.Abs(target - list[i]); //find numerisk forskel på target og pågældende. if (tempDiff == 0) //Hvis forskellen er 0, kan den ikke blive mindre. return i; //returner derfor index. else if (tempDiff < diff) //Hvis forskellen er mindre end en tidligere { diff = tempDiff; //husk forskel nearestIndex = i; //husk index } else //ellers er forskellen større og vi bevæger os væk fra målet. break; //stop derfor eftersøgningen. } return nearestIndex; //returner den fundne værdi }
Jaa.. men det kan være den bliver nyttig i anden sammenhæng :)
Synes godt om
Ny brugerNybegynder
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.