如何将DataColumn转换为与列具有相同数据类型的值列表?
示例:
static List<T> ColumnValuesToList<T>(DataTable dt,out string typeName)
{
typeName = dt.Columns[0].DataType.ToString();
List<T> list = new List<T>();
foreach (DataRow row in dt.Rows)
{
// var value = row[0];
//list.Add(value);
list.Add(row[0]);
}
return list;
}
通话:
List<int> myList = ColumnValuesToList(myDtWithInts,typeInfo);
List<string> myList = ColumnValuesToList(myDtWithStrings,typeInfo);
答案 0 :(得分:2)
你几乎就在那里,你只需要从正确的类型中获取DataRow的值。即,你可以施放:
list.Add((T)row[0]);
或(我更喜欢)使用Field<T>
extension method,其优势是可以使用可空类型(DBNull.Value
自动转换为null
):
list.Add(row.Field<T>(0));
但是,使用LINQ,您并不需要自己实现:
List<int> myList = myDtWithInts.AsEnumerable()
.Select(drow => drow.Field<int>(0)).ToList();