关于datatable和datatable.Copy().DefaultView.ToTable的不同怎么理解/?
先代码:
if (!IsPostBack)
         {
             DataTable dt = Xml.XmlToDataTable("Xml/menu.xml");//读取xml到datatable中
             DataTable dtType = dt.Copy().DefaultView.ToTable(true, "type");//选择DataTable等数据源中的唯一值
             dlType.DataSource = dtType;
             dlType.DataBind();
             foreach (DataListItem di in this.dlType.Items)//datalistitem 引用变量 不可操作!this.dltype.item 数据表的项可操作
             {
                 Label lblType = di.FindControl("lblType") as Label;
                DataList dlDetail = di.FindControl("dlDetail") as DataList;
                DataView dv = dt.Copy().DefaultView;
                dv.RowFilter = "type='" + lblType.Text.Trim() + "'";
                 dv.Sort = "name asc";
                 dlDetail.DataSource = dv;
                 dlDetail.DataBind();
             }
这是pageload的代码,红色标记的两个datatable有什么不用  下面粉红色的又是什么意思呢?
------解决方案--------------------
dtType是只返回dt的"type"那一列而已,就是说第二个table得到的是一个新的DataTable,这个DateTable只包含dt的“type”这一列的数据。
Label lblType = di.FindControl("lblType") as Label;// 找到lblType并委婉转换为Label控件
  DataList dlDetail = di.FindControl("dlDetail") as DataList;// 找到dlDetail并委婉转换为DataList控件
  DataView dv = dt.Copy().DefaultView;// 拷贝dt,并返回副本的DefaultView
  dv.RowFilter = "type='" + lblType.Text.Trim() + "'";// 筛选dv里的数据,只取type这一字段等于lblType这个Label控件的文本内容(去掉前面空格),说白了就是筛选type等于lblType.Text.Trim() 的那一些数据