2017-07-16 6 views
0

Ich benutze die großen NinjaNye.SearchExtensions in C# core mvc. Das funktioniert perfekt, aber ich würde dynamische Suchoptionen benötigen. Ist das möglich? Oder brauche ich mehrere wenn sonst Blöcke?Dynamische Linq Suche mit NinjaNye.SearchExtensions

Ich habe diese Linq

return tmpIQueryable 
    .Where(c => data.Contains(c.id) && c.enddate > DateTime.Now.Date && c.startdate < untildate) 
    .Include(c => c.DataContainer) 

    .Search(x => x.title.ToLower(), 
      x => x.manu.ToLower(), 
      x => x.short.ToLower(), 
      x => x.long.ToLower(), 
      x => x.detail.ToLower()) 
    .ContainingAll(searchlist) 

I boolean Variablen, bei denen suchen haben in (Benutzer auf der grafischen Benutzeroberfläche mit Kontrollkästchen können wählen, wo er suchen möchten in) - search_in_title, search_in_manu, search_in_short, search_in_long, search_in_detail. Wie kann ich dynamisch in einem Feld suchen oder nicht ohne in diesem Fall 5^2 if/else für verschiedene linq.

Vielen Dank Ralf

Antwort

0

Sie mehrfach .Where Klausel hinzufügen können:

if (searchInTitleChecked) 
    tmpIQueryable = tmpIQueryable.Where(r => r.Title.ToLower() == title); 

if (searchInShortChecked) 
    tmpIQueryable = tmpIQueryable.Where(r => r.Short.ToLower() == short); 

Dies ist nur Beispiel für Linq, aber nicht NinjaNye.SearchExtensions. Wenn es nicht hilfreich ist, ignoriere es bitte.

auch immer Sie das gleiche versuchen können hier:

if (searchInTitleChecked) 
    tmpIQueryable = tmpIQueryable.Search(x => x.title.ToLower()); 

if (searchInShortChecked) 
    tmpIQueryable = tmpIQueryable.Search(x => x.short.ToLower()); 

tmpIQueryable = tmpIQueryable.ContainingAll(searchlist); 
+0

Hallo, vielen Dank für Ihre schnelle Antwort! Leider scheint es mit den NinjaNye.SearchExtensions auf diese Weise nicht zu funktionieren :(Ich bekomme einige Fehler, wenn ich diese Lösung versuche. Ich benutze diese Komponente, weil es cool ist, flexibel nach einem oder mehreren Suchbegriffen in einer Liste zu suchen - in allen Bereichen. – Ralf