18. juni 2006 - 18:15Der er
15 kommentarer og 2 løsninger
Hvordan gennemløber jeg smartes en liste<>
Hej eksperter.
jeg har lavet en metode som skal gennemløbe en list af objecter. og adde de objecter som ligger mellem den min og max værdi som brugeren indtaster til en ny sorted liste.
PT har jeg prøvet det her.
public List<Bolig> Seacht(string type, int bAMin, int gAMin, float pMin, float lnMin, float lbMin, int bAMax, int gAMax, float pMax, float lnMax, float lbMax) { List<Bolig> SortedList = new List<Bolig>();
bool AddB = false; foreach(Bolig bol in objList) { if (bol.BType == btype) { if (bol.GAreal > gAMin || bol.GAreal < gMax) { if (bol.BArealr > bAMin || bol.BArealr < boligAMax) { if (bol.SalgsPris > prisMin || bol.SalgsPris < prisMax) { if (bol.LejeNetto > lejeNettoMin || bol.LejeNetto < lejeNettoMax) { if (bol.LejeBrutto > lejeBruttoMin || bol.LejeBrutto < lejeBruttoMax) { AddBolig = true; } else { }
} else { } } else { } } else { }
} else { } } else { }
if (AddBolig) { SortedList.Add(bol); }
}//end foreach
return SortedList; } nogen som ha andre gode ider ?
public List<Bolig> Seacht(string type, int bAMin, int gAMin, float pMin, float lnMin, float lbMin, int bAMax, int gAMax, float pMax, float lnMax, float lbMax) { List<Bolig> SortedList = new List<Bolig>();
bool AddB = false; foreach(Bolig bol in objList) { if (bol.BType != btype) continue; if (!(bol.GAreal > gAMin || bol.GAreal < gMax)) continue; if (!(bol.BArealr > bAMin || bol.BArealr < boligAMax)) continue; if (!(bol.SalgsPris > prisMin || bol.SalgsPris < prisMax)) continue; if (!(bol.LejeNetto > lejeNettoMin || bol.LejeNetto < lejeNettoMax)) continue; if (!(bol.LejeBrutto > lejeBruttoMin || bol.LejeBrutto < lejeBruttoMax)) continue; SortedList.Add(bol);
}//end foreach
return SortedList; }
Men ellers Ligner dette umildbart et job for din database hvis du bruger sådan en.
det gør jeg skam. men er det ikke smarter at lave søgningen i min liste når jeg nu har den til rådighed, plus det ville da blive en ondskabsfuld sql streng :D
fuck det drenge jeg twister bare noget SQL.. som klare det. kom med et svar hver så deler i bare points.. for ulegligheden.
ked af jeg tog jeres tid men jeg fikser det bare med noget SQL den her gang, men jeg vil have de predicates i baghovedet til når man ellers arbejder med lister.. tak for jers tid !
Ang. prdikater og lister, så får du lige et større eksempel hvor der også sorteres:
using System; using System.Collections.Generic;
namespace e716180 { class Program { static void Main(string[] args) { // Vi opretter listen.
List<int> blandedeTal = new List<int>();
Random tilfældet = new Random(); for (int i = 1; i <= 10; i++) blandedeTal.Add(tilfældet.Next(1000));
Console.WriteLine("Alle tallene:"); foreach (int tal in blandedeTal) Console.WriteLine(tal);
// Vi søger i listen efter de lige tal.
Predicate<int> erTalletLige = new Predicate<int>(ErTalletLige); List<int> deLigeTal = blandedeTal.FindAll(erTalletLige);
Console.WriteLine(); Console.WriteLine("Kun de lige tal:"); foreach (int tal in deLigeTal) Console.WriteLine(tal);
// Vi sortere listen af de lige tal i stigende orden.
Comparison<int> stigendeSortering = new Comparison<int>(SorterStigende); deLigeTal.Sort(stigendeSortering);
Console.WriteLine(); Console.WriteLine("De lige tal i sorteret rækkefølge:"); foreach (int tal in deLigeTal) Console.WriteLine(tal); }
public static bool ErTalletLige(int etVilkårligtTal) { if (etVilkårligtTal % 2 == 0) return true; else return false; }
public static int SorterStigende(int a, int b) { if (a > b) return 1; else if (a == b) return 0; else return -1; } } }
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.