Viene visualizzato un errore quando si seleziona da una riga.AsEnumerable(). Sto usando il seguente codice ...Linq e DBNull - Errore
var rows = ds.Tables[0].AsEnumerable();
trafficData = rows.Select(row => new tdDataDC
{
CalculationCount = row.Field<Int64>("biCalculationCountSeqID")
, Zone = row.Field<Int16>("siFkZoneId")
, Miles = row.Field<decimal>("dcMiles")
, Plaza = row.Field<Int16>("siFkPlazaId")
, VehicleCount = row.Field<int>("iVehicleCount")
});
maggior parte delle volte funziona bene, ma quando ci sono NULLS nel database che sto ricevendo questo errore "non può lanciare DBNull.Value digitare 'System.Int16 'Si prega di utilizzare un tipo nullable .. " Come posso correggere questo? Non voglio che i miei datacontracts abbiano tipi Nullable, mi piacerebbe usare un ternario o qualcosa del genere, e se un valore è NULL, usa solo 0. È possibile?
Grazie per qualsiasi aiuto,
~ ck
mi piace la risposta di Marc, ma solo per ottenere un altro modo di farlo, è possibile cambiare i tipi di valore per essere annullabile (a breve? lungo? ecc.) e poi si fondono, quindi qualcosa come row.Field ("foo") ?? 0 –
BTW, invece di fare 2 chiamate di riga, se T è sempre un tipo di valore, si potrebbe fare row.Field> (columnName) ?? default (T) anche se dubito che ne valga la pena se usi anche dei tipi di riferimento :) –