【发布时间】:2018-10-30 11:41:31
【问题描述】:
我构建了将特定数据表列值转换为特定类型列表的方法,最类似于字符串列表。然而,当数据表列是decimal 或任何其他类型时,我遇到的问题是List<string> 我想得到结果,例如:十进制到字符串异常。我应该在我的方法中改变什么来解决这个问题?
//for example here colname is decimal i want still my list to be List<string> containing that decimals as strings
var myList = GetSpecificColumnValuesFromDatatableToList<string>(mydt, "colname");
public List<T> GetSpecificColumnValuesFromDatatableToList<T>(DataTable datatable, string colName)
{
List<T> list = datatable.AsEnumerable().Select(r => r.Field<T>(colName)).ToList();
return list;
}
【问题讨论】:
-
不要使用
string。使用正确的类型,例如GetSpecificColumnValuesFromDatatableToList<decimal> -
但是我会得到十进制列表。请注意,我想获取字符串列表,在这种特殊情况下,我的数据表列是十进制类型,因此必须以某种方式将此列十进制转换为字符串。
-
您仍然必须使用
<decimal>,因为该值不是字符串并且无法转换为字符串。您需要使用ToString()或String.Format将小数格式化为字符串,例如在Select中:GetSpecificColumnValuesFromDatatableToList<decimal>().Select(d=>d.ToString("#00.00")).ToList();。或者在调用ToList之前创建一个不同的方法来执行此操作 -
您的方法可能应该是 List
,因此 T 可以是十进制的,或者引入另一个通用 T2 以将 return 与 convert 分开。 -
问题使用了错误的类型。解决方案是使用 正确的 类型。如果要将小数格式化 为字符串,则需要使用正确的方法。如果您希望该方法仅返回字符串,则应在其
Selectlambda 中调用ToString()