Wpis z mikrobloga

Jak najszybciej i najładniej pozbyć się wartości nullowych w c#.
Mam taką sytuację np. w kodzie

foreach (var ss in db.Szablony)
{
L_DefinicjiSzablonow.Add(new ListaDefinicjiSzablonow()
{
ID = ss.ID,
NazwaSzablonu = ss.NazwaSzablonu,
RodzajPrzeliczania = ss.RodzajePrzeliczania.NazwaRodzaj,
RodzajZasobu = ss.SzablonZasob,
DataDodania = (DateTime)**ss.AddDate**,
});
}

i w miejscu gdzie mamy DataDodania zdarza się ze mam null co z tym zrobić ?

#programowanie #csharp #C#
  • 15
  • Odpowiedz
@budyn: Dokładnie albo DataDodania będzie DateTime? Albo Robisz ss.AddDate!=null?ss.AddDate:default(DateTime); ale wtedy dostaniesz rok chyba 0001
  • Odpowiedz
@n1troo: jeśli chcesz się pozbyć z szablonów tych z nullami, to w foreach mozesz dopisac Where. A jak nie, to albo nullable, albo zapytanie z ?? i jakas domyślna wartość.
  • Odpowiedz
Szablony


@medyk8ns: nie moge wpisać db.db.Szablony.Where(w=>w.AddDate != null)
gdyż inne szablony normalnie maja date dodania.

Słyszałem kiedyś o jakimś fantastycznym operatorze do nullów dopiero od C# 6.0
  • Odpowiedz
Zmień typ DataDodania na nullable (DateTime?) i na to castuj.


@budyn: takie castowanie co mi da? Jak będzie null to wrzuci tam 1900 rok ?
  • Odpowiedz
@n1troo: No to w czym problem? Datetime nie może przyjąć wartości null. Czyli masz gwarancję, że pole SS. AddDate zawsze będzie miało jakąś wartość.
  • Odpowiedz
@budyn: chyba zapomniałem wspomnieć że db.Szablony to context bazy danych czyli tak naprawdę przeglądamy tabelę w bazie danych i tam jest patologia bo te pola mogą być NULL :/
  • Odpowiedz