2010-07-27 2 views
1

Возможный дубликат:
.NET - Convert Generic Collection to DataTableкак преобразовать список DataTable

привет, я хочу, чтобы преобразовать список типов данных в тип данных. я написал функцию

static DataTable ListToDataTable<T>(IEnumerable<T> list) 
     { 
      var dt = new DataTable(); 

      foreach (var info in typeof(T).GetProperties()) 
      { 
       dt.Columns.Add(new DataColumn(info.Name, info.PropertyType)); 
      } 
      foreach (var t in list) 
      { 
       var row = dt.NewRow(); 
       foreach (var info in typeof(T).GetProperties()) 
       { 
        row[info.Name] = info.GetValue(t, null); 
       } 
       dt.Rows.Add(row); 
      } 
      return dt; 
     } 

, но это бросает исключение «DataSet не поддерживает System.Nullable <>» как мы можем решить эту проблему или есть другое решение

ответ

0

Дайте этому попытку .. .

// When building table 
Type pt = info.PropertyType; 
if(pt.IsGenericType && pt.GetGenericTypeDefinition()==typeof(Nullable<>)) 
    pt = Nullable.GetUnderlyingType(pt); 
} 
dt.Columns.Add(new DataColumn(info.Name, pt)); 

// When loading table 
row[info.Name] = info.GetValue(t, null) ?? DBNull.Value; 
Смежные вопросы