将字符串转换为可为null的类型(int,double等)

我正在尝试进行一些数据转换。不幸的是,许多数据都是字符串形式的,应该是int或double等等。

所以我得到的是这样的:

double? amount = Convert.ToDouble(strAmount);

这种方法的问题是,如果strAmount为空,如果为strAmount为空,则我希望它等于null,因此当我将其添加到数据库中时,该列将为null。所以我最终写了这个:

double? amount = null;

if(strAmount.Trim().Length>0)

{

amount = Convert.ToDouble(strAmount);

}

现在可以正常工作,但是我现在只有五行代码而不是一行。这使事情更加难以阅读,尤其是当我有大量要转换的列时。

我以为我会使用字符串类和泛型的扩展名来传递类型,这是因为它可以是double或int或long。所以我尝试了这个:

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;

}

}

但是我得到一个错误:无法将类型’string’转换为’T?’

有没有解决的办法?我对使用泛型创建方法不是很熟悉。

回答:

要记住的另一件事是字符串本身可能为null。

public static Nullable<T> ToNullable<T>(this string s) where T: struct

{

Nullable<T> result = new Nullable<T>();

try

{

if (!string.IsNullOrEmpty(s) && s.Trim().Length > 0)

{

TypeConverter conv = TypeDescriptor.GetConverter(typeof(T));

result = (T)conv.ConvertFrom(s);

}

}

catch { }

return result;

}

以上是 将字符串转换为可为null的类型(int,double等) 的全部内容, 来源链接: utcz.com/qa/426383.html

回到顶部