Sto tentando di fare qualche conversione di dati. Sfortunatamente, molti dei dati sono in stringhe, dove dovrebbero essere int o double, ecc ...
Quindi quello che ho è qualcosa di simile:
double? amount = Convert.ToDouble(strAmount);
Il problema con questo approccio è se strAmount è vuoto, se è vuoto voglio che sia pari a null, quindi quando lo aggiungo al database la colonna sarà nulla. Quindi ho finito per scrivere questo:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Ora funziona bene, ma ora ho cinque righe di codice anziché una. Questo rende le cose un po 'più difficili da leggere, specialmente quando ho una grande quantità di colonne da convertire.
Ho pensato di usare un'estensione per la classe stringa e generici per passare il tipo, questo perché potrebbe essere un doppio, un int o un lungo. Quindi ho provato questo:
public static class GenericExtension
{
public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct
{
if (s.Trim().Length > 0)
{
return (Nullable<T>)s;
}
return null;
}
}
Ma viene visualizzato l'errore: Impossibile convertire il tipo 'stringa' in 'T?'
C'è un modo per aggirare questo? Non ho molta familiarità con la creazione di metodi usando i generici.