Hallo nochmal
Nochmal das Beispiel mit Benutzern und Registern, aber eine andere Frage.
Ich habe eine Tabelle Benutzer, eine Tabelle Register und eine Tabelle RegisterZuBenutzer, da jeder Benutzer mehrere Register haben kann und umgekehrt.
Oberhalb des Gridviews, das mir alle Kombinationen ausgibt, habe ich eine Checkboxlist, in der ich alle Register ausgebe. Wenn ich also ein oder mehrere der Register markiere und auf "filtern" klicke, dann sollen alle Benutzer ins Gridview kommen, die einem der markierten Registern zugewiesen sind.
Versucht habe ich es folgendermassen:
Dim reg = From r As ListItem In Me.lstRegister.Items Where r.Selected Select r.Value
For Each r In reg
user = user.Where(Function(u) u.RegisterIDs.Contains(Integer.Parse(r)))
Next
RegisterIDs ist eine List<integer>
Der Fehler da dran ist, dass mir dieser Code ANDs zwischen die Statements knüpft, obwohl ich da ORs bräuchte. Ausserdem bräuchte ich eine Klammer um all diese ORs, da ich unter umständen noch weitere Filter per .where anhänge (zB. Datumsfilter).
Wie muss ich das angehen?
Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso
Hallo sra,
Der Fehler da dran ist, dass mir dieser Code ANDs zwischen die Statements knüpft, obwohl ich da ORs bräuchte.
ich sehe in deinem Code überhaupt nicht durch, wo da AND-Verknüfungen sind und OR-Verknüfungen sein sollten oder wo du Klammern drum machen möchtest... X(
Gruß,
dN!3L
Hallo sra,
ah, ich glaub, ich verstehe, was du vorhast. Sollte folgendermaßen gehen:
var reg = this.lstRegister.Items.Where(i => i.Selected).Select(i => Int32.Parse(i.Value));
users = users.Where(u => u.RegisterIDs.Intersect(reg).Count()>0);
Der Trick ist, einmal IEnumerable.Intersect() zu verwenden, statt diese komische foreach-Schleife, die immer weiter selektiert.
Gruß,
dN!3L
Hallo dN!3L
Ganz grandios! Genau so geht es (und macht auch Sinn).
Musste zwar vorgängig .ToList machen, da er den Befehl nicht in SQL umwandeln kann, aber funktioniert bestens.
Danke
sra
Wenn Zeit in Geschichte übergeht und keine Blüten trägt werden Zukunftsbilder blass //Clueso