2014-05-25 24 views
1

我怎樣才能將一個DataColumn轉換爲與列相同的數據類型的值列表?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

就快,你只需要得到正確的從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(); 
相關問題