C#/.Net把复杂Dictionary转换为DataTable
List转DataTabel和DataTable转List之前都写过,但是最近遇到了一个奇怪的需求,我使用了Dictionary来存储数据,然后又需要把Dictionary转成DataTable来给目标赋值,百度转了一圈没找到相关的内容,然后就自己写了一个,CV工程师竟然开始手写方法了,哈哈哈。
实现思路:
1.获取Dictionary
中最大的子集行数
2.按字典Key添加列头
3.按最大子集行数添加空白行
4.填充数据即可
核心代码:
/// <summary>
/// Dictionary转DataTable
/// </summary>
/// <param name="dict">字典</param>
/// <returns></returns>
public static DataTable DictToDataTable(Dictionary<string, List<LibraryExcel>> dict)
{
//获取MAX数据集行数
var maxCount = dict.Values.OrderByDescending(t => t.Count).FirstOrDefault().Count;
DataTable dt = new DataTable();
//动态添加列
foreach (var colName in dict.Keys)
{
dt.Columns.Add(colName, typeof(string));
}
//创建空白行
for (int i = 0; i < maxCount; i++)
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
//填充数据
foreach (KeyValuePair<string, List<LibraryExcel>> item in dict)
{
int thiscount = 0;
foreach (LibraryExcel libraryExcel in item.Value)
{
dt.Rows[thiscount][item.Key] = libraryExcel.RackCode;
thiscount++;
}
}
return dt;
}
数据效果(不确定的Content列数量,根据最大的子集生成行,然后挨个单元格填充数据):
版权声明:
作者:兴兴
文章:C#/.Net把复杂Dictionary转换为DataTable
链接:https://www.networkcabin.com/notes/2877
文章版权归本站所有,未经授权请勿转载。
作者:兴兴
文章:C#/.Net把复杂Dictionary转换为DataTable
链接:https://www.networkcabin.com/notes/2877
文章版权归本站所有,未经授权请勿转载。
THE END