Wpis z mikrobloga

@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.
  • Odpowiedz
@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
  • Odpowiedz
@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.
  • Odpowiedz
@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)
  • Odpowiedz
@ugotowany_kamien:

dataUmowieniaOd == DateTime.MinValue to muszę dać true

ale to zwraca true albo false :P. Czyli w ogóle nie potrzebujesz tego ?:.

k.Key.DATAUMOWIENIAOD == null ) to muszę dać false

no to dajesz k.Key.DATAUMOWIENIAOD != null :P i wychodzi na to samo :)
  • Odpowiedz