list<DataTable > 多行转换拼接为DataTable

 

 

 1   //新建datatable存放返回值
 2   
 3   DataTable ret = new DataTable();
 4    
 5   ret.Columns.Add("nodeid");
 6   
 7   ///
 8 ...  在datatable中添加列
 9   ///
10  ret.Columns.Add("opinion");
11  ret.PrimaryKey = new DataColumn[] { ret.Columns["nodeid"] };//设置主键
12  List<string> lst = new List<string>();//新建list存放已编辑的 主键
13  for (int i = 0; i < dateList.Count; i++)//循环传入值
14  {
15  Hashtable ht = dateList[i];
16 string nodeid = ht["nodeid"].ToString();
17  if (!lst.Contains(nodeid))//标记已编辑主键
18  {
19  lst.Add(nodeid);
20  DataRow dr = ret.NewRow();
21  dr["nodeid"] = nodeid;
22  dr["actionname"] = ht["actionname"].ToString();
23  dr["submittime"] = ht["submittime"].ToString();
24  dr["nodename"] = ht["nodename"].ToString();
25  SetVarToDataRow(ht, dr);
26  ret.Rows.Add(dr);//追加到返回值中
27  }
28  else
29  {
30  DataRow dr = ret.Rows.Find(nodeid);//查找到已编辑过的行值
31  SetVarToDataRow(ht, dr);
32  }
33  }
34  ret.DefaultView.Sort = "submittime DESC";//排序
35  DataView dataView = ret.DefaultView;
36  ret = dataView.ToTable();
37  return ret;
38 //根据key值标记编辑对应值
39 private static void SetVarToDataRow(Hashtable ht, DataRow dr)
40 {
41 switch (ht["key"].ToString())
42 {
43 case "opinion":
44 dr["opinion"] = ht["value"].ToString();
45 break;
46 case "checkusername":
47 dr["checkusername"] = ht["value"].ToString();
48 break;
49 case "checkuseragencyname":
50 dr["checkuseragencyname"] = ht["value"].ToString();
51 break;
52 case "checkuserpostname":
53 dr["checkuserpostname"] = ht["value"].ToString();
54 break;
55 default:
56 break;
57 }
58 }

 

posted @ 2019-12-31 10:27  孤城青衫落  阅读(195)  评论(0)    收藏  举报