Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - [LINQ] Dynamische WHERE Abfrage anhand einer List<String>


imoenvia - Mo 06.02.12 13:54
Titel: [LINQ] Dynamische WHERE Abfrage anhand einer List<String>
Hi alle zusammen,

Ich bin gerade auf Arbeit an einem kleinen Problem angekommen.

Folgendes Query habe ich:


C#-Quelltext
1:
2:
3:
            var query = (from fachinfo in fISucheDataContext.fachinfo_abschnitt
                         where SqlMethods.Like(fachinfo.abschnitt_text, "%" + suchwort + "%")
                         group fachinfo by fachinfo.fachinfo_id).Take(100);


Desweiteren habe ich eine Liste mit Dynamischen Strings.
Ich versuche nun schon seit ein paar Stunden mithilfe von Google Suche, die Abfrage so hin zu bekommen
das sie die Where Abfrage anhand der Strings der Liste erweitert.

z.b:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
var query = (from fachinfo in fISucheDataContext.fachinfo_abschnitt
where SqlMethods.Like(fachinfo.abschnitt_text, "%" + suchwort + "%") &&
where foreach (String s in Suchwörter) 
{
s == fachinfo.abschnitt_typ_id;
}
group fachinfo by fachinfo.fachinfo_id).Take(100);


Leider bisher ohne Erfolg. Vielleicht kann mir einer von Euch netten Codern, auf die Sprünge helfen.

Vielen Dank schon einmal im vorraus,
Imoen


Th69 - Mo 06.02.12 17:35

Hallo imoenvia,

da scheinst du Linq nicht ganz richtig verstanden zu haben - du mußt schon Methoden aufrufen.

Probiere mal

C#-Quelltext
1:
2:
3:
...
where SqlMethods.Like(fachinfo.abschnitt_text, "%" + suchwort + "%") && Suchwörter.Contains(fachinfo.abschnitt_typ_id)
...

(je nachdem was für einen Typ 'Suchwörter' hat - bei einem Array kannst du auch IndexOf(...) > 0 benutzen)


imoenvia - Mi 08.02.12 11:08

Vielen lieben Dank, ich werd es mal probieren.

LINQ ist noch realtiv Neuland für mich, aber bin ja Lernfähig :)

Liebe Grüße
Imoen