C#中DataTable和List互轉(zhuǎn)的示例代碼
DataTable
DataTable 是 C# 中常用的一種數(shù)據(jù)表格類型,它類似于數(shù)據(jù)庫中的表格,可以用來存儲(chǔ)和處理數(shù)據(jù)。DataTable 中的數(shù)據(jù)可以通過行和列來訪問和操作,每行代表一個(gè)數(shù)據(jù)項(xiàng),每列代表一個(gè)屬性。
以下是一些 DataTable 的常用屬性和方法:
- Columns:列集合。
- Rows:行集合。
- NewRow():創(chuàng)建一個(gè)新的 DataRow 對(duì)象。
- Load(DataReader):從一個(gè) DataReader 對(duì)象中加載數(shù)據(jù)到 DataTable。
- Select(filterExpression, sortExpression):根據(jù)指定的篩選條件和排序條件返回滿足條件的行集合。
- Merge(DataTable):合并兩個(gè) DataTable,返回一個(gè)新的 DataTable。
List
List 是 C# 中常用的一種動(dòng)態(tài)數(shù)組類型,它可以用來存儲(chǔ)任何類型的數(shù)據(jù),可以動(dòng)態(tài)增加或刪除元素。List 中的元素可以通過索引來訪問和操作。
以下是一些 List 的常用屬性和方法:
- Count:元素?cái)?shù)量。
- Add(item):添加一個(gè)元素到 List 的末尾。
- Insert(index, item):在指定的位置插入一個(gè)元素。
- Remove(item):從 List 中刪除一個(gè)元素。
- RemoveAt(index):刪除指定位置的元素。
- Contains(item):判斷 List 中是否包含指定的元素。
1. DataTable轉(zhuǎn)List
public class DtToList<T> where T : new() ? { ? ? ?/// <summary> ? ? ?/// datatable to list ? ? ?/// </summary> ? ? ?/// <param name="dt"></param> ? ? ?/// <returns></returns> ? ? ?public static ?List<T> ConvertToModel(DataTable dt) ? ? ?{ ? ? ? ? ?List<T> ts = new List<T>();// 定義集合 ? ? ? ? ?Type type = typeof(T); // 獲得此模型的類型 ? ? ? ? ?string tempName = ""; ? ? ? ? ?foreach (DataRow dr in dt.Rows) ? ? ? ? ?{ ? ? ? ? ? ? ?T t = new T(); ? ? ? ? ? ? ?PropertyInfo[] propertys = t.GetType().GetProperties();// 獲得此模型的公共屬性 ? ? ? ? ? ? ?foreach (PropertyInfo pi in propertys) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?tempName = pi.Name; ? ? ? ? ? ? ? ? ?if (dt.Columns.Contains(tempName)) ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ?if (!pi.CanWrite) continue; ? ? ? ? ? ? ? ? ? ? ?object value = dr[tempName]; ? ? ? ? ? ? ? ? ? ? ?if (value != DBNull.Value) ? ? ? ? ? ? ? ? ? ? ? ? pi.SetValue(t, value, null); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?} ? ? ? ? ? ? ?ts.Add(t); ? ? ? ? ?} ? ? ? ? ?return ts; ? ? ?} }
2. List轉(zhuǎn)DataTable
/// <summary> /// list to datatable /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection"></param> /// <returns></returns> public DataTable ListToDt<T>(IEnumerable<T> collection) { var props = typeof(T).GetProperties(); var dt = new DataTable(); dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray()); if (collection.Count() > 0) { for (int i = 0; i < collection.Count(); i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in props) { object obj = pi.GetValue(collection.ElementAt(i), null); tempList.Add(obj); } object[] array = tempList.ToArray(); dt.LoadDataRow(array, true); } } return dt; }
到此這篇關(guān)于C#中DataTable和List互轉(zhuǎn)的示例代碼的文章就介紹到這了,更多相關(guān)C# DataTable和List互轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換
- c#中DataTable轉(zhuǎn)List的2種方法示例
- C#中將DataTable轉(zhuǎn)化成List<T>的方法解析
- C#實(shí)現(xiàn)DataTable,List和Json轉(zhuǎn)換的方法
- C#實(shí)現(xiàn)DataTable轉(zhuǎn)換成IList的方法
- C#將DataTable轉(zhuǎn)化為List<T>
- C#將DataTable轉(zhuǎn)換成list的方法
- c#的datatable轉(zhuǎn)list示例
- c#將list類型轉(zhuǎn)換成DataTable方法示例
相關(guān)文章
C#借助OpenCvSharp讀取攝像頭并顯示的實(shí)現(xiàn)示例
OpenCvSharp是一個(gè)OpenCV的.Net wrapper,應(yīng)用最新的OpenCV庫開發(fā),本文主要介紹了C#借助OpenCvSharp讀取攝像頭并顯示的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2022-05-05.net C# 實(shí)現(xiàn)任意List的笛卡爾乘積算法代碼
笛卡爾(Descartes)乘積又叫直積。假設(shè)集合A={a,b},集合B={0,1,2},則兩個(gè)集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。2013-05-05