[C#] Linq i filtry

[C#] Linq i filtry
.::CYMES::.
  • Rejestracja:prawie 22 lata
  • Ostatnio:10 miesięcy
0

Witam serdecznie.
Mam następujący problem a mam 5 filtrów typu np. stanowisko, data od, do itp. I chciałbym zrobić coś takiego jak opcję filtruj. I teraz pytanie jak to zrobić? Bo raczej bez sensu jest pisanie po kolei wszystkich funkcji do każdej możliwości. W zwykłym zapytaniu sql nie byłoby problemu bo posklejało by się stringi i z tego miałoby się ładnie zapytanie do bazy. Czy da się zrobić cos podobnego w linq. Czyli np jeśli mam date różną do null to daje where a jeśli nie to go pomijam.

HideYoshi
  • Rejestracja:ponad 20 lat
  • Ostatnio:prawie 14 lat
  • Postów:315
0

nie bardzo rozumiem o co ci chodzi, ale moze o cos takiego :>

Kopiuj
var query = from segmenty in stanowisko
               from data in date
               select date;

"Nie trudno jest zwycięstwo odnieść, trudno jest sprawić by trwałe było"
.::CYMES::.
  • Rejestracja:prawie 22 lata
  • Ostatnio:10 miesięcy
0

Chodzi np o coś takiego jak wybiorę np daną osobę z combobox-a to ma wyć dodany do zapytania warunek where a jeśli nie to po prostu ma on zostać pominięty. Czyli czy da się jakieś warunki wpleść w linq?
[edit]
Juz znalazłem rozwiązanie. Jakby ktoś potrzebował to http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

quetzalcoatl
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 6 lat
0

jezus.. po co Ci cofac sie do sklejania stringow (bo DLinq prawieze Cie do tego cofa..), skoro masz linq, obiekty i odroczona konstrukcje/egzekucje zapytania?

var query = from xxx in yyyy select xxx;
if(date != null) query = query.where( x => x.data == date.value);
if(imie != null) query = query.where( x => x.imie == imie);

x[] result = query.ToList();


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał
Shadow85
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 15 lat
  • Postów:91
0

proponuje tak:

Kopiuj
var Lista= from i in Baza.Tabela
               where (szukana_data==null or(szukana_data!=null and i.data==szukana_data))and
                         (szukane_imie == null or (szukane_imie!=null and i.imie==szukane_imie))
               select i;

LINQ w zależności od parametru wygeneruje inne zapytanie (prostsze lub trudniejsze), a przynajmneij to powinien zrobić teoretycznie. W każdym bądz razie do bazy poleci jedno zapytanie a nie 10 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.