Mam następujący kod, który wydaje się działać:
DataRow row = <result of a query>;
string strVarName = (row["VarName"]??"").ToString();
Mogę też użyć czegoś takiego - i to również działa:
string strVarName = row["VarName"]==null ? "" : row["VarName"].ToString();
Chciałbym użyć tego samego formularza, aby uzyskać datę. Intellisense informuje mnie, że dopuszczalny operator nie lubi pracować z datami, więc próbuję czegoś podobnego, muszę to zrobić
string strVarName = row["VarName"]==DBnull.Value ? "" : row["VarName"].ToShortDateString();
Pojąć? Dla ciągów porównuję do wartości null, ale dla dat porównuję z DBnull. Łańcuch daty nie będzie działał spójnie z porównaniem do wartości null. I "m okay z tym ... i może być, że porównanie ciąg będzie działać, jeśli próbowałem porównać go do DBNull.Value. Po prostu jestem ciekawy, dlaczego wydaje się, że muszę użyć DBNull.Value w porównaniu do pola DateTime DataRow, podczas gdy mogę użyć wartości null w porównaniu z polem string.
Odpowiedzi:
2 dla odpowiedzi № 1DateTime jest typem wartości i nie może być zerowy, dlatego nie można „porównać go z wartością null (tak jak„ nie można porównywać int z wartością null ”).