DataTable dt = new DataTable();
 dt.Columns.Add("姓名");
 dt.Columns.Add("学号");
 dt.Rows.Add(new object[] { "小张", "0001" });
 dt.Rows.Add(new object[] { "小王", "0002" });
 dt.Rows.Add(new object[] { "小李", "0003" });想把上面的Datatable转换成下面这样的List<Dictionary<string,string>>
List<Dictionary<string, string>> lisD = new List<Dictionary<string, string>>();Dictionary<string, string> dct = new Dictionary<string, string>();
dct.Add("姓名", "小张");
dct.Add("学号", "0001");
lisD.add(dct );dct = new Dictionary<string, string>();
dct.Add("姓名", "小王");
dct.Add("学号", "0002");
lisD.add(dct );dct = new Dictionary<string, string>();
dct.Add("姓名", "小李");
dct.Add("学号", "0003");
lisD.add(dct );

解决方案 »

  1.   

    list<Dictionary<string, string>> list = new  list<Dictionary<string, string>>();
    foreach(datarow dr in datatable.rows)
    {
        Dictionary<string, string> dct = new Dictionary<string, string>()
        foreach(datacolumn dc in datatable.datacolumns)
        {
              dct.add(dc.columnname,dr[dc.columnname].tostring());
        }
        list .add(dct )
    }
      

  2.   

    谢谢daydayup_die各位还有没有不用循环的方法?
    ToDictionary的话,可以实现吗?
      

  3.   

    dt.Rows.Cast<DataRow>().ToDictionary(x => x[0].ToString(), x => x[1].ToString());
      

  4.   

    还有一种情况DataTable dt = new DataTable();
     dt.Columns.Add("姓名");
     dt.Columns.Add("学号");
     dt.Rows.Add(new object[] { "小张", "0001" });
     dt.Rows.Add(new object[] { "小王", "0002" });
     dt.Rows.Add(new object[] { "小李", "0003" });想把上面的Datatable转换成下面这样的Dictionary<string,string>
    Dictionary<string, string> dct = new Dictionary<string, string>();
    dct.Add("小张", "0001");
    dct.Add("小王", "0002");
    dct.Add("小李", "0003");
      

  5.   

    dt.Rows.Cast<DataRow>().Select(x => 
        {
            var dict = new Dictionary<string, string>();
            dict.Add("姓名", x[0].ToString());
            dict.Add("学号", x[1].ToString());
            return dict;
        }).ToList();