W SQL Server możesz użyć tej IsNull()
funkcji, aby sprawdzić, czy wartość jest pusta, a jeśli tak, zwrócić inną wartość. Teraz zastanawiam się, czy w C # jest coś podobnego.
Na przykład chcę zrobić coś takiego:
myNewValue = IsNull(myValue, new MyValue());
zamiast:
if (myValue == null)
myValue = new MyValue();
myNewValue = myValue;
Dzięki.
c#
.net
sql-server
isnull
Hades
źródło
źródło
this.BinaryExists = vModel.BinaryExists ?? 0;
nathis.BinaryExists = vModel.BinaryExists ?? false;
.Niestety, nie ma odpowiednika operatora koalescencji zerowej, który działa z DBNull; w tym celu musisz użyć operatora trójskładnikowego:
źródło
(object)oldValue ?? (object)DBNull.Value)
byłoby równoważne z((object)oldValue == null) ? (object)DBNull.Value : (object)oldValue
czym innym jest problem, którego dotyczy rozwiązanie Roberta Rossneya.źródło
new MyValue()
zostanie wykonana nawet wtedy, gdymyValue
nie jest zerowa i nie jest wymagana !!Użyj metody Equals:
źródło
Do pracy z DB Nulls stworzyłem grupę dla moich aplikacji VB. Nazywam je Cxxx2, ponieważ są podobne do wbudowanych w VB funkcji Cxxx.
Możesz je zobaczyć w moim projekcie CLR Extensions
http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967
źródło
Piszesz dwie funkcje
Działają bardzo dobrze
źródło
Używałem następującej metody rozszerzenia na moich typach DataRow:
stosowanie:
Najpierw sprawdzam istnienie kolumny, ponieważ jeśli żaden z wyników zapytania nie ma wartości innej niż null dla tej kolumny, obiekt DataTable nawet nie zapewni tej kolumny.
źródło
Użyj poniższych metod.
źródło
źródło
To ma być w połowie żartem, ponieważ pytanie jest trochę głupie.
Jest to metoda rozszerzająca, jednak rozszerza System.Object, więc każdy używany obiekt ma teraz metodę IsNull ().
Następnie możesz zaoszczędzić mnóstwo kodu, wykonując:
zamiast super kulawego:
źródło
Object
obiektu, na którym ma działać, a jeśli obiekt byłby Nothing (dokładnie w przypadku, w którym próbujesz przetestować w tym Q), nie byłoby instancji dla klasy rozszerzającej, na której mogłaby działać, a zatem zgłoś wyjątek NullObject.Object
w VB. Zobacz to pytanie SO lub ten wpis na blogu .