Elo, mam zapytanie do którego wrzucam daty z formatki. Mimo warunku że data nie może być null wyświetla mi rekordy z nullami. Oto zapytanie . Ktoś coś?
@ugotowany_kamien: jeśli to co jest przed znakiem zapytania jest false, zawsze zwracasz true, a chyba chcesz false? ? k.Key.DATA_UMOWIENIA_OD >= dataUmowieniaOd : true
@ugotowany_kamien: nie rozumiem :P Sprawdzasz (DateTime?)k.Key.DATA_UMOWIENIA_OD!= null) a jeśli to nie prawda to i tak zwracasz wynik. Tak naprawdę nie zwracasz tylko jeśli k.Key.DATA_UMOWIENIA_OD >= dataUmowieniaOd, bo tak na pierwszy rzut oka w pozostałych przypadkach wynik zwrócisz.
@Yahoo_: chodzi mi o to że w programie z którego daty idą do metody która wysyła zapytanie do bazy danych w formie linq mam wybór czy chcę uwzględnić datę w zapytanie czy nie. Jeżeli bym wybrał date i dał k.Key.DATAUMOWIENIAOD >= dataUmowieniaOd : false to wtedy zadziała ale jeżeli nie wybiorę zakresu dat to wtedy do whera doda "and 0=1" i wtedy przez to zapytanie się nie wykona
@ugotowany_kamien: ale jak chcesz olać datę? C# jest językiem silnie typowanym nie możesz "olać" jakiegoś pola. W najlepszym wypadku możesz zwrócić nulla albo default value. Może chcesz zrobić coś takiego? where dateParameter == null || (prawdziwyWarunek)? Wtedy ignorujesz jeżeli dateParameter jest nullem (i masz zawsze true), a po || (oznacza lub) dajesz warunek, który ma się wykonać jeśli użytkownik podał date parameter.
@ugotowany_kamien: zakochałeś się w condition? trueValue: falseValue co :D? To samo możesz zapisać: dataUmowieniaOd == DateTime.MinValue || (k.Key.DATAUMOWIENIAOD != null && k.Key.DATAUMOWIENIAOD >= dataUmowieniaOd)
Elo, mam zapytanie do którego wrzucam daty z formatki. Mimo warunku że data nie może być null wyświetla mi rekordy z nullami. Oto zapytanie . Ktoś coś?
? k.Key.DATA_UMOWIENIA_OD >= dataUmowieniaOd : true
Sprawdzasz
(DateTime?)k.Key.DATA_UMOWIENIA_OD!= null)a jeśli to nie prawda to i tak zwracasz wynik. Tak naprawdę nie zwracasz tylko jeślik.Key.DATA_UMOWIENIA_OD >= dataUmowieniaOd, bo tak na pierwszy rzut oka w pozostałych przypadkach wynik zwrócisz.where dateParameter == null || (prawdziwyWarunek)? Wtedy ignorujesz jeżeli dateParameter jest nullem (i masz zawsze true), a po || (oznacza lub) dajesz warunek, który ma się wykonać jeśli użytkownik podał date parameter.
&& ((dataUmowieniaOd == DateTime.MinValue ? true : (k.Key.DATAUMOWIENIAOD != null ? k.Key.DATAUMOWIENIAOD >= dataUmowieniaOd : false))
condition? trueValue: falseValueco :D?To samo możesz zapisać:
dataUmowieniaOd == DateTime.MinValue || (k.Key.DATAUMOWIENIAOD != null && k.Key.DATAUMOWIENIAOD >= dataUmowieniaOd)
te zapytanie które napisałem post wcześniej działa
ale to zwraca true albo false :P. Czyli w ogóle nie potrzebujesz tego ?:.
no to dajesz k.Key.DATAUMOWIENIAOD != null :P i wychodzi na to samo :)
boolA ? boolB : boolC można przerobić na jedno wyrażenie typu bool.