C#DataTable與List/Json/Dictionary互相轉換
知識庫
C#DataTable與List/Json/Dictionary互相轉換
2023-09-02 17:29
本文將介紹如何在C#中進行DataTable與List、Json、Dictionary之間的相互轉換。
在C#開發中,經常會遇到需要將DataTable對象與List、Json、Dictionary等類型相互轉換的場景。下面將介紹一些常用的方法:
1. DataTable轉換為List
可以使用LINQ查詢語句將DataTable轉換為List:
public static List
DataTableToList (DataTable dataTable) where T : new() { List list = new List (); foreach (DataRow row in dataTable.Rows) { T item = new T(); foreach (DataColumn column in dataTable.Columns) { PropertyInfo property = typeof(T).GetProperty(column.ColumnName); if (property != null && row[column] != DBNull.Value) { property.SetValue(item, row[column], null); } } list.Add(item); } return list; } 2. List轉換為DataTable
可以使用反射和泛型將List轉換為DataTable:
public static DataTable ListToDataTable
(List list) { DataTable dataTable = new DataTable(); Type type = typeof(T); PropertyInfo[] properties = type.GetProperties(); foreach (PropertyInfo property in properties) { dataTable.Columns.Add(property.Name, property.PropertyType); } foreach (T item in list) { DataRow row = dataTable.NewRow(); foreach (PropertyInfo property in properties) { row[property.Name] = property.GetValue(item, null); } dataTable.Rows.Add(row); } return dataTable; } 3. DataTable轉換為Json
使用Json.Net庫可以方便地將DataTable轉換為Json字符串:
string dataTableJson = JsonConvert.SerializeObject(dataTable);
4. Json轉換為DataTable
同樣使用Json.Net庫可以將Json字符串轉換為DataTable:
DataTable dataTable = JsonConvert.DeserializeObject
(jsonString); 5. DataTable轉換為Dictionary
可以使用LINQ查詢語句將DataTable轉換為Dictionary:
public static Dictionary
DataTableToDictionary (DataTable dataTable, string keyColumnName, string valueColumnName) { return dataTable.AsEnumerable() .ToDictionary(row => row.Field (keyColumnName), row => row.Field (valueColumnName)); } 6. Dictionary轉換為DataTable
可以通過創建一個新的DataTable,并將Dictionary中的鍵值對逐個添加到DataTable的行中:
public static DataTable DictionaryToDataTable
(Dictionary dictionary) { DataTable dataTable = new DataTable(); dataTable.Columns.Add("Key", typeof(TKey)); dataTable.Columns.Add("Value", typeof(TValue)); foreach (KeyValuePair pair in dictionary) { dataTable.Rows.Add(pair.Key, pair.Value); } return dataTable; }
標簽:
- C#
- DataTable
- List
- Json
- Dictionary
- 轉換