22 Eylül 2017 Cuma

DataTable ve IList

IList ile Doldurma
Örnek
Şöyle yaparız.
public static DataTable ToDataTable<T>(this IList<T> data)
{
  PropertyDescriptorCollection properties = 
            TypeDescriptor.GetProperties(typeof(T));
  DataTable table = new DataTable();
  foreach (PropertyDescriptor prop in properties)
    table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ??
                                                            prop.PropertyType);
  foreach (T item in data)
  {
    DataRow row = table.NewRow();
    foreach (PropertyDescriptor prop in properties)
      row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
    table.Rows.Add(row);
  }
  return table;
}
IList'e Çevirme
Örnek
Şöyle yaparız
private static List<T> ConvertDataTable<T>(DataTable dt)  
{  
  List<T> data = new List<T>();  
  foreach (DataRow row in dt.Rows)  
  {  
    T item = GetItem<T>(row);  
    data.Add(item);  
  }  
  return data;  
 } 

private static T GetItem<T>(DataRow dr)  
{  
  Type temp = typeof(T);  
  T obj = Activator.CreateInstance<T>();  

  foreach (DataColumn column in dr.Table.Columns)  
  {  
    foreach (PropertyInfo pro in temp.GetProperties())  
    {  
      if (pro.Name == column.ColumnName)  
        pro.SetValue(obj, dr[column.ColumnName], null);  
      else  
        continue;  
    }  
  }  
  return obj;  
}  
Çağırmak için şöyle yaparız
List<Student> studentDetails = ConvertTable (dt);  



Hiç yorum yok:

Yorum Gönder