2010-07-27 93 views
1

可能重複:
.NET - Convert Generic Collection to 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; 
     } 

但這引發異常「數據集不支持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;