Hallo zusammen, ich suche nach einer Idee wie man ein Objekt mit mehreren Properties (Listen von Eigenschaften) gegen bestimmte Anforderungen prüfen kann.
Beispielsweise habe ich einen Außendienstmitarbeiter der in mehreren Regionen eingesetzt werden kann und nur einige bestimmte Bereiche gut kann (bspw. er kennt sich mit Brandschutz aus). Ich versuchs mal mit Pseudocode deutlicher zu machen.
public class Mitarbeiter { List<Region> Regionen { get; set; } List<Thema> Themenbereiche { get; set; } }
public class Region { string Name { get; set; } int Prio { get; set; } // bspw.: Prio 1 Hauptmitarbeiter, Prio 2 kann als Vertreter dienen, Prio 3 Vertreter des Vertretes, usw. }
public class Thema { string Name { get; set; } int Prio { get; set; } // Prio 1 Hauptmitarbeiter, Prio 2 kann als Vertreter dienen }
Ich möchte jetzt aus einer Liste von Mitarbeitern die Mitarbeiter finden, die meinen Anforderungen entsprechen und ggf. mehr können. Also finde Mitarbeiter der in Region Süd arbeitet und sich auf jeden Fall mit Brandschutz auskennt. Anfragen dieser Art kommen recht häufig so dass ich relativ schnell die Mitarbeiter finden muss die es dürfen.
Würde man dies mit Hashvalues und nem Dictionary machen? Oder wie würdet ihr so etwas lösen.
Mal davon ausgehend dass das da oben C# ist, würde ich dir LINQ empfehlen. Zum Beispiel mit folgendem Codeschnipsel:
List<Mitarbeiter> allMitarbeiter = new List<Mitarbeiter>(); var query = from m in allMitarbeiter where (from r in m.Regionen where r.Name == "Berlin" select r).Count() > 0 where (from t in m.Themenbereiche where t.Name == "Brandschutz" select t).Count() > 0 select m;
foreach (var mitarbeiter in query) { //wasauchimmer }