Merhabalar
Buraya daha sonraları da kullanacağım kod bloğu bırakıyorum. İhtiyacı olan alsın :)
Bu kod sql ile çektiğiniz datatable nesnesini aynı propertylere sahip class ından oluşan list nesnesine çevirir. Üzerinde null kontrolleri ve diğer detaylı kontroller yapılmıştır.
public 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 dataRow)
{
Type temp = typeof(T);
T obj = Activator.CreateInstance<T>();
foreach (DataColumn column in dataRow.Table.Columns)
{
foreach (PropertyInfo pro in temp.GetProperties())
{
Type tProp = pro.PropertyType;
if (pro.Name == column.ColumnName && dataRow[column.ColumnName] != DBNull.Value)
{
var val = dataRow[column.ColumnName];
if (dataRow[column.ColumnName].GetType() == typeof(System.Int64))
{
val = Convert.ToInt32(dataRow[column.ColumnName]);
}
if (tProp.IsGenericType && tProp.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
{
//if it's null, just set the value from the reserved word null, and return
if (val == null)
{
pro.SetValue(val, null, null);
continue;
}
//Get the underlying type property instead of the nullable generic
tProp = new NullableConverter(pro.PropertyType).UnderlyingType;
}
pro.SetValue(obj, Convert.ChangeType(val, tProp), null);
//obj.SetPropertyValueFromString(pro.Name, val.ToString());
}
else
continue;
}
}
return obj;
}
Hiç yorum yok:
Yorum Gönder