Autor Beitrag
mydani
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 19.02.10 23:05 
Hallo,

für eine Suche möchte ich ein Select auf eine Liste von Objekten ausführen.
Maximal sollen 3 Properties der Objekte nach einem String durchsucht werden.
Der User kann allerdings per Checkbox auswählen ob alle drei Properties (z.B. Name, Vorname, Geburtsname) oder weniger durchsucht werden sollen.
Bei 3 Properties mit je 2 Zuständen (durchsuchen/nicht durchsuchen) ergibt das 2^3 verschiedene Kritierenkombinationen.
Anstatt nun per LINQ 8 verschiedene Abfragen zu definieren, würde ich lieber eine Query haben, die abhängig von den Checkboxen den Where-Teil erweitert.
Mit Datasets ging das super angenehm - man hat einen string definiert, der das Filter-Statement enthält.
Dann konnte man weitere Statements mit dem String verodern und am Ende die Abfrage ausführen.

Bei LINQ scheint das sehr schwer - hat da jemand eine praktikable Lösung?

Danke!

Gruß,
Daniel


Moderiert von user profile iconKha: Topic aus Datenbanken (inkl. ADO.NET) verschoben am Fr 19.02.2010 um 23:20
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 20.02.10 00:20 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
.Where(x => {
  var result = true;
  if (MatchSurname.Checked && x.Surname != SurnameBox.Text)
    result = false;
  ...
  return result;
})

:?:

_________________
>λ=
mydani Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 20.02.10 01:02 
Genial, das ist es. Ich habs davor mit LINQKit und PredicateBuilder versucht, was so lange gut ging wie die Properties nicht null waren.
In deiner Lösung kann ich aber genau das auch noch abfangen und der Code ist verständlich. Super. Danke!