一、List轉DataTable的概述
List和DataTable都是常用的數據容器,在實際開發中,我們常常需要在這兩個容器之間進行數據的轉換。List轉DataTable就是把List中的數據轉換成DataTable格式的形式,便於進行數據處理和存儲。
二、List轉DataTable的實現
1. List轉DataTable去重
在List轉換成DataTable的過程中,如果List中有一些重複數據的話,轉換成DataTable的時候就會出現重複數據。解決重複數據的方法可以使用Linq的Distinct()方法進行去重操作。以下是C#示例代碼:
//使用Linq的Distinct()方法進行去重操作
var distinctList = list.Distinct();
DataTable dataTable = new DataTable();
//轉換List中數據到DataTable
foreach (var item in distinctList)
{
var properties = item.GetType().GetProperties();
if (dataTable.Columns.Count == 0)
{
foreach (var property in properties)
{
dataTable.Columns.Add(new DataColumn(property.Name, property.PropertyType));
}
}
DataRow row = dataTable.NewRow();
foreach (var property in properties)
{
row[property.Name] = property.GetValue(item);
}
dataTable.Rows.Add(row);
}
2. List轉DataTable取名
當我們把List轉換成DataTable時,需要給每個DataTable的列起個名字。以下是C#示例代碼:
DataTable dataTable = new DataTable("MyDataTable");
foreach (var property in typeof(MyObject).GetProperties())
{
dataTable.Columns.Add(new DataColumn(property.Name));
}
3. List轉DataTable保留欄位類型
在List轉換成DataTable的過程中,我們需要將List中的數據類型保留到DataTable中。以下是C#示例代碼:
DataTable dataTable = new DataTable();
foreach(var property in typeof(MyObject).GetProperties())
{
dataTable.Columns.Add(new DataColumn(property.Name, property.PropertyType));
}
foreach(var item in list)
{
DataRow row = dataTable.NewRow();
foreach (var property in typeof(MyObject).GetProperties())
{
row[property.Name] = property.GetValue(item);
}
dataTable.Rows.Add(row);
}
三、其他List轉DataTable的情況
1. List轉String
在有些情況下,我們需要把List中的數據轉換成String類型,這時候我們可以使用String.Join()方法進行轉換,示例如下:
List list = new List{"a","b","c","d"};
string result = String.Join(",",list);
2. List轉Map
如果要把List轉換成Map的話,可以使用Linq的ToDictionary()方法進行轉化,示例如下:
List list = new List{new MyObject(){id=1,name="aaa"}};
Dictionary map = list.ToDictionary(x=>x.id,x=>x.name);
3. List轉Json
如果要把List轉換成Json格式,可以使用JavascriptSerializer類進行轉換,示例如下:
List list = new List{new MyObject(){id=1,name="aaa"}};
var json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(list);
4. List轉Set
在C#中沒有Set這種數據結構,但是可以通過HashSet來實現Set的功能。將List轉換成Set時,可以使用HashSet的構造方法來實現,示例如下:
List list = new List{"a","b","c","d"};
HashSet set = new HashSet(list);
5. List轉Array
把List轉換成Array可以使用List的ToArray()方法進行轉換,示例如下:
List list = new List{"a","b","c","d"};
string[] array = list.ToArray();
6. List轉Tensor
List轉Tensor涉及到機器學習框架TensorFlow的知識,如果需要使用TensorFlow的話,可以使用TensorFlowSharp將List轉換成Tensor。以下是C#示例代碼:
List list = new List{new float[]{1,2,3}};
var tensor = new TensorFlow.Tensor(list);
四、總結
本文我們討論了從各個方面實現將List轉換成DataTable的方法,包括欄位去重、名稱設置、類型保留、轉化成String、Map、Json、Set、Array和Tensor等。我們可以根據實際場景需求來選擇相應的方法來實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185341.html
微信掃一掃
支付寶掃一掃