asp.net中DataTable和List之間相互轉換
在asp.net開發中常會遇到這樣的問題,這裡跟大家分享一個其之間相互轉換的方法:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Web;
namespace ContourWebs.BaseClass
{
public class DTList
{
/// <summary>
/// DataTable轉換成List<T>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="table"></param>
/// <returns></returns>
public static List<T> GetList<T>(DataTable table)
{
List<T> list = new List<T>();
T t = default(T);
PropertyInfo[] propertypes = null;
string tempName = string.Empty;
foreach (DataRow row in table.Rows)
{
t = Activator.CreateInstance<T>();
propertypes = t.GetType().GetProperties();
foreach (PropertyInfo pro in propertypes)
{
tempName = pro.Name;
if (table.Columns.Contains(tempName))
{
object value = row[tempName];
if (!value.ToString().Equals(""))
{
pro.SetValue(t, value, null);
}
}
}
list.Add(t);
}
return list.Count == 0 ? null : list;
}
/// <summary>
/// List<T>轉換成DataTable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <returns></returns>
public static DataSet ConvertToDataSet<T>(IList<T> list)
{
if (list == null || list.Count <= 0)
{
return null;
}
DataSet ds = new DataSet();
DataTable dt = new DataTable(typeof(T).Name);
DataColumn column;
DataRow row;
System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (T t in list)
{
if (t == null)
{
continue;
}
row = dt.NewRow();
for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
{
System.Reflection.PropertyInfo pi = myPropertyInfo[i];
string name = pi.Name;
if (dt.Columns[name] == null)
{
column = new DataColumn(name, pi.PropertyType);
dt.Columns.Add(column);
}
row[name] = pi.GetValue(t, null);
}
dt.Rows.Add(row);
}
ds.Tables.Add(dt);
return ds;
}
}
}
相關文章
- DataTable與List相互轉換
- 擴充套件方法(1) DataTable 和List 相互轉換套件
- DataTable轉換list泛型集合(反射)泛型反射
- json字串和js物件之間相互轉換JSON字串物件
- Perl中本地時間和UNIX時間戳間相互轉換時間戳
- 轉:java中陣列與List相互轉換的方法Java陣列
- mysql時間與字串之間相互轉換MySql字串
- SQL Server 字串和時間相互轉換SQLServer字串
- c++中string類物件和字元陣列之間的相互轉換C++物件字元陣列
- spark: RDD與DataFrame之間的相互轉換Spark
- Android px、dp、sp之間相互轉換Android
- android中String與InputStream之間的相互轉換方式Android
- c# DataTable轉ListC#
- DataTable 轉為 List<dynamic>
- Java中 set,list,array(集合與陣列)、Map相互轉換Java陣列
- javascript時間戳和時間格式的相互轉換JavaScript時間戳
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- Python 實現Excel和TXT文字格式之間的相互轉換PythonExcel
- Python時間戳的使用和相互轉換Python時間戳
- 簡單易用的JSON與List相互轉換JSON
- 時間日期和時間戳相互轉換程式碼例項時間戳
- RVA和RAW相互轉換
- SCN 時間戳的相互轉換時間戳
- Java 中 CLOB 和字串之間的轉換Java字串
- Asp.net C# 把 Datatable轉換成JSON 字串ASP.NETC#JSON字串
- pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉換SparkSQL
- 使用boost庫處理 int 、float、string之間相互轉換
- android byte[]陣列,bitmap,drawable之間的相互轉換Android陣列
- oracle 10g中scn和timestamp相互轉換Oracle 10g
- PostgreSQL中將物件oid和物件名相互轉換SQL物件
- List和ObservableCollection的轉換
- pandas中dataframe與dict相互轉換
- (C#)時間戳、DateTime相互轉換C#時間戳
- 陣列和集合的相互轉換陣列
- javascript數字和字串相互轉換JavaScript字串
- 字串和陣列的相互轉換字串陣列
- JavaScript全形和半形相互轉換JavaScript
- 字串和數字的相互轉換字串