C#将每列的值转换为数组
我想转换一个C#对象或数据表,使每个列成为一个键,值成为一个数组
year productOne ProductTwo ProductThree 2010 1 2 3 2011 10 20 30 2012 100 200 300 2013 1000 2000 3000
我期待生成以下JSON输出。 请记住,行和列都不是动态的。
[{ name: productOne , data: [1,10,100,1000] },{ name: productTwo , data: [2,20,200,2000] },{ name: productThree , data: [3,30,300,3000] }]
DataTable dt = new DataTable(); dt.Columns.Add("col1"); dt.Columns.Add("col2"); dt.Columns.Add("col3"); DataRow dr = dt.NewRow(); dr[0] = "10"; dr[1] = "20"; dr[2] = "30"; dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = "100"; dr[1] = "200"; dr[2] = "300"; dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = "1000"; dr[1] = "2000"; dr[2] = "3000"; dt.Rows.Add(dr); List list = new List (); for (int i = 0; i < dt.Columns.Count; i++) { dynamic result = new ExpandoObject(); result.name = dt.Columns[i].ColumnName; result.data = dt.Rows.Cast() .Select(row => row[i]) .ToArray(); list.Add(result); } var op = JsonConvert.SerializeObject(list);
你绝对可以在Lists and Dictionaries的帮助下完成这项工作。
public static IDictionary> TransposeDataTable(DataTable table) { if (table == null) { return null; } var dicData = new Dictionary> (); var lstRows = new List
上面的代码将从表的列名创建字典键,每列的数据将进入相应的列表。 这是一种元组。
我们假设您的DataTable
是有效的dt
var dataObject = TransposeDataTable (dt); var jsonString = JsonConvert.SerializeObject (dataObject, Formatting.Indented);
转换成功后, jsonString
将包含我们漂亮的Json对象。 就我而言,作为虚拟数据的dt
会产生类似的东西。
上述就是C#学习教程:C#将每列的值转换为数组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
{ "year": [ "2010", "2011", "2012", "2013", "2014" ], "produceOne": [ "1", "11", "21", "31", "41" ], "ProductTwo": [ "2", "12", "22", "32", "42" ], "ProductThree": [ "3", "13", "23", "33", "43" ] }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/988682.html