这几天发现,上次写的那个方法,不灵活,于是稍微改了一下,如下 /// <summary> /// 不同时间段,不同部件,不良数。{key:日期,value:{[key:不良部件名称1,value:不良部件数目],[key:不良部件名称2,value:不良部件数目]} /// </summary> /// <param name="dic">{key:日期,value:[key:不良部件名称,value:不良部件数目]}</param> /// <param name="keyTitle">日期标题</param> /// <returns></returns> public static DataTable ProcessData2(Dictionary<string, List<Dictionary<string, string>>> dic, string keyTitle) { DataTable dt = new DataTable(); //添加时间段标题 dt.Columns.Add(new DataColumn(keyTitle, typeof(string))); //由于除时间段以外的所有标题,变动大,所以有选择性的来增加 foreach (KeyValuePair<string, List<Dictionary<string, string>>> kvp1 in dic) { DataRow dr = dt.NewRow(); dr[keyTitle] = kvp1.Key; for (int i = 0; i < kvp1.Value.Count; i++) { foreach (KeyValuePair<string, string> kvp2 in kvp1.Value[i]) { if (!dt.Columns.Contains(kvp2.Key)) { dt.Columns.Add(new DataColumn(kvp2.Key, typeof(string)));//添加不良部件名称标题 } dr[kvp2.Key] = kvp2.Value; } } dt.Rows.Add(dr); } return dt; } 本人刚刚学习.net,不足之处,望大家指点...