Czytam wynik z MS SQL 2008 Database z typem kolumny dbtype.time ze datareader przy użyciu C# Daab 4,0 ram.Jak przekonwertować wynik Datareader z DbType.Time na obiekt Timespan?
Mój problem polega na tym, że dokumenty MSDN mówią, że dbtype.time powinien być odwzorowany na przedział czasowy, ale jedyny bliski konstruktor dla przedziału czasowego, który widzę, akceptuje długi, a wynik zwrócony z jednostki danych nie może być rzutowany na długi lub bezpośrednio na okres czasu.
Znalazłem to Article, który pokazuje metodę datareader.getTimeSpan(), ale procesor danych w daab 4.0 wydaje się nie mieć tej metody.
Więc jak mogę przekonwertować wynik z datareader do obiektu przedziale czasu?
waszą i Kena rozwiązania są dobre. Jeśli jednak wartość jest zerowa, komunikat wyjątku rozwiązania Kena jest bardziej opisowy. 'SqlNullValueException - Dane mają wartość Null. Ta metoda lub właściwość nie może zostać wywołana przy wartościach Null "VS" InvalidCastException - Określony rzut nie jest prawidłowy ". – TheWanderingMind
Aby odpowiedzieć na komentarz BishopBarbera, czy kolumnę można unieważnić, należy ją przekonwertować na TimeSpan? typ zerowy i sprawdź zero. 'TimeSpan? span = reader ["tsfield"] == DBNull.Value? (? TimeSpan) null: (?) Czytnik TimeSpan [ "tsfield"] ' –
znalazłem to rozwiązanie lepsze, bo często nie uzyskać dostępu do danych przez czytnik indeksu. Mam jednak metodę pośrednią, która sprawdza zerowość. – MichaelChan