DataColumn到列表(相同的数据类型)

时间:2014-05-25 11:14:59

标签: c# .net list

如何将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);

1 个答案:

答案 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();