欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中DataTable和List互轉(zhuǎn)的示例代碼

 更新時(shí)間:2023年04月12日 10:27:12   作者:劃]破  
很多場景下,我們需要將List轉(zhuǎn)換成為DataTable,本文主要介紹了C#中DataTable和List互轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)寫系統(tǒng)日志的方法

    C#實(shí)現(xiàn)寫系統(tǒng)日志的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)寫系統(tǒng)日志的方法,涉及C#針對(duì)系統(tǒng)日志的創(chuàng)建、寫入及刪除等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-08-08
  • WinForm單例窗體用法實(shí)例

    WinForm單例窗體用法實(shí)例

    這篇文章主要介紹了WinForm單例窗體,結(jié)合實(shí)例形式分析了窗體的單例模式定義、實(shí)現(xiàn)與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • C#借助OpenCvSharp讀取攝像頭并顯示的實(shí)現(xiàn)示例

    C#借助OpenCvSharp讀取攝像頭并顯示的實(shí)現(xiàn)示例

    OpenCvSharp是一個(gè)OpenCV的.Net wrapper,應(yīng)用最新的OpenCV庫開發(fā),本文主要介紹了C#借助OpenCvSharp讀取攝像頭并顯示的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-05-05
  • C#實(shí)現(xiàn)二叉查找樹

    C#實(shí)現(xiàn)二叉查找樹

    本文詳細(xì)講解了C#實(shí)現(xiàn)二叉查找樹的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#自定義Key類型的字典無法序列化的解決方案詳解

    C#自定義Key類型的字典無法序列化的解決方案詳解

    當(dāng)我們使用System.Text.Json.JsonSerializer對(duì)一個(gè)字典對(duì)象進(jìn)行序列化的時(shí)候,默認(rèn)情況下字典的Key不能是一個(gè)自定義的類型,本文整理了幾種解決方案,希望對(duì)大家有所幫助
    2024-03-03
  • C#字符串的截取函數(shù)用法總結(jié)

    C#字符串的截取函數(shù)用法總結(jié)

    這篇文章主要介紹了C#字符串的截取函數(shù)用法,實(shí)例總結(jié)了substring,Remove,indexOf等函數(shù)的用法,并對(duì)具體應(yīng)用進(jìn)行了實(shí)例分析,需要的朋友可以參考下
    2014-10-10
  • C#解析Lrc歌詞文件過程詳解

    C#解析Lrc歌詞文件過程詳解

    這篇文章主要為大家詳細(xì)介紹了C#解析Lrc歌詞文件過程,很有趣的解析過程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • .net C# 實(shí)現(xiàn)任意List的笛卡爾乘積算法代碼

    .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
  • oledb連接access數(shù)據(jù)庫示例

    oledb連接access數(shù)據(jù)庫示例

    本文為大家介紹一個(gè)oledb連接access數(shù)據(jù)庫的示例,代碼很簡單,可以直接使用
    2014-01-01
  • C#與java TCP通道加密通信實(shí)例

    C#與java TCP通道加密通信實(shí)例

    這篇文章主要介紹了C#與java TCP通道加密通信,文章通過真實(shí)的案例詳細(xì)講解說明C#與java TCP通道加密通信的相關(guān)資料,需要的小伙伴可以參考一下
    2021-10-10

最新評(píng)論