c# DataTable轉List
public class ToModel where T : new()
{
///
/// 將DataSet轉化為List
///
///
///
public static List DataSetToList(DataSet ds)
{
// 定義集合
List ts = new List();
try
{
// 獲得此模型的型別
Type type = typeof(T);
string tempName = "";
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 獲得此模型的公用變數
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo proper in propertys)
{
tempName = proper.Name.ToUpper();
// 檢查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
object value = dr[tempName];
if (value != DBNull.Value)
{
if (proper.PropertyType == typeof(bool) && value.ToString() == "1")
proper.SetValue(t, value, null);
else if (proper.PropertyType == typeof(bool) && value.ToString() != "1")
proper.SetValue(t, value, null);
else
{
if (proper.PropertyType.ToString().Contains("System.Nullable"))
{
string propertytype = proper.PropertyType.ToString().Substring(proper.PropertyType.ToString().IndexOf('[') + 1);
propertytype = propertytype.Remove(propertytype.LastIndexOf(']'));
proper.SetValue(t, Convert.ChangeType(value, TypeDelegator.GetType(propertytype)), null);
}
else
proper.SetValue(t, Convert.ChangeType(value, proper.PropertyType), null);
}
}
}
}
ts.Add(t);
}
}
}
catch (Exception ex)
{
throw ex;
}
return ts;
}
public static List DataTableToList(DataTable dt)
{
// 定義集合
List ts = new List();
try
{
// 獲得此模型的型別
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 獲得此模型的公用變數
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo proper in propertys)
{
tempName = proper.Name.ToUpper();
// 檢查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
object value = dr[tempName];
if (value != DBNull.Value)
{
if (proper.PropertyType == typeof(bool) && value.ToString() == "1")
proper.SetValue(t, value, null);
else if (proper.PropertyType == typeof(bool) && value.ToString() != "1")
proper.SetValue(t, value, null);
else
{
if (proper.PropertyType.ToString().Contains("System.Nullable"))
{
string propertytype = proper.PropertyType.ToString().Substring(proper.PropertyType.ToString().IndexOf('[') + 1);
propertytype = propertytype.Remove(propertytype.LastIndexOf(']'));
proper.SetValue(t, Convert.ChangeType(value, TypeDelegator.GetType(propertytype)), null);
}
else
proper.SetValue(t, Convert.ChangeType(value, proper.PropertyType), null);
}
}
}
}
ts.Add(t);
}
}
catch (Exception ex)
{
throw ex;
}
return ts;
}
}
{
///
/// 將DataSet轉化為List
///
///
///
public static List
{
// 定義集合
List
try
{
// 獲得此模型的型別
Type type = typeof(T);
string tempName = "";
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 獲得此模型的公用變數
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo proper in propertys)
{
tempName = proper.Name.ToUpper();
// 檢查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
object value = dr[tempName];
if (value != DBNull.Value)
{
if (proper.PropertyType == typeof(bool) && value.ToString() == "1")
proper.SetValue(t, value, null);
else if (proper.PropertyType == typeof(bool) && value.ToString() != "1")
proper.SetValue(t, value, null);
else
{
if (proper.PropertyType.ToString().Contains("System.Nullable"))
{
string propertytype = proper.PropertyType.ToString().Substring(proper.PropertyType.ToString().IndexOf('[') + 1);
propertytype = propertytype.Remove(propertytype.LastIndexOf(']'));
proper.SetValue(t, Convert.ChangeType(value, TypeDelegator.GetType(propertytype)), null);
}
else
proper.SetValue(t, Convert.ChangeType(value, proper.PropertyType), null);
}
}
}
}
ts.Add(t);
}
}
}
catch (Exception ex)
{
throw ex;
}
return ts;
}
public static List
{
// 定義集合
List
try
{
// 獲得此模型的型別
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 獲得此模型的公用變數
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo proper in propertys)
{
tempName = proper.Name.ToUpper();
// 檢查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
object value = dr[tempName];
if (value != DBNull.Value)
{
if (proper.PropertyType == typeof(bool) && value.ToString() == "1")
proper.SetValue(t, value, null);
else if (proper.PropertyType == typeof(bool) && value.ToString() != "1")
proper.SetValue(t, value, null);
else
{
if (proper.PropertyType.ToString().Contains("System.Nullable"))
{
string propertytype = proper.PropertyType.ToString().Substring(proper.PropertyType.ToString().IndexOf('[') + 1);
propertytype = propertytype.Remove(propertytype.LastIndexOf(']'));
proper.SetValue(t, Convert.ChangeType(value, TypeDelegator.GetType(propertytype)), null);
}
else
proper.SetValue(t, Convert.ChangeType(value, proper.PropertyType), null);
}
}
}
}
ts.Add(t);
}
}
catch (Exception ex)
{
throw ex;
}
return ts;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28699126/viewspace-759354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DataTable 轉為 List<dynamic>
- DataTable與List相互轉換
- C#:Dictionary轉DataTableC#
- DataTable轉換list泛型集合(反射)泛型反射
- List,DataTable實現行轉列的通用方案
- 擴充套件方法(1) DataTable 和List 相互轉換套件
- asp.net中DataTable和List之間相互轉換ASP.NET
- C# Datatable 新增列C#
- c#之datatable(1)C#
- C# List 用法list<>C#
- C#:DataTable對映成ModelC#
- Asp.net C# 把 Datatable轉換成JSON 字串ASP.NETC#JSON字串
- C#中將DataTable型別轉化為泛型集合C#型別泛型
- C# DataTable Compute方法的使用C#
- 泛型轉DataTable方法泛型
- C# 匯出DataTable至csv檔案C#
- C# List用法C#
- C# datatable中重複資料去重C#
- C#實現DataTable資料分割處理C#
- C# list物件排序C#物件排序
- csv/json/list/datatable匯出為excel的通用模組設計JSONExcel
- C#中刪除DataTable中的行的方法C#
- C# DataTable中返回列中的最大值C#
- C# List構造TreeViewC#View
- C# List用法詳解C#
- C#裡List的用法C#
- C# List常用函式用法C#函式
- 重學c#系列——list(十二)C#
- C# List.ForEach 方法C#
- C#泛型類之LISTC#泛型
- DataTable中資料記錄的統計 (轉)
- c#中Array,ArrayList 與List<T>的區別、共性與轉換C#
- DataTable 排序排序
- DataTable排序排序
- C#獲取變更過的DataTable記錄的實現方法C#
- c# 採用datatable 快速匯入資料至MSSQL的方法分享C#SQL
- C# WebService返回引數為DataTable報錯“XML文件有錯誤”C#WebXML
- 深入解析C# List<T>的原始碼C#原始碼