杂记a---DataTable.DefaultView.ToTable,.Sort,.RowFilter;DataTable.Copy()

 string sql = "";

            sql = string.Format(
                "select {0} from pkg_info {1} {2}",
                columns,
                Convert.GetSearchSql(searchParams, ref parameters),
                Convert.GetOrderBySql(orderParams));

等同于

string sql;
            sql = "select " + columns + " from user_collect_product a LEFT JOIN pkg_info b ON b.ProdID=a.ProdID " +
                Convert.GetSearchSql(searchParams, ref parameters) +
                Convert.GetOrderBySql(orderParams);

 DataTable.DefaultView 属性

DefaultView 属性返回可用于排序、筛选和搜索 DataTable 的 DataView。

if (!IsPostBack)
        {
            DataTable dt = Xml.XmlToDataTable("Xml/menu.xml");//读取xml到datatable中
            DataTable dtType = dt.Copy().DefaultView.ToTable(true, "type");//选择DataTable等数据源中的唯一值
//dtType是只返回dt的"type"那一列而已,就是说第二个table得到的是一个新的DataTable,这个DateTable只包含dt的“type”这一列的数据。 dlType.DataSource = dtType; dlType.DataBind(); foreach (DataListItem di in this.dlType.Items)//datalistitem 引用变量 不可操作!this.dltype.item 数据表的项可操作 { 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里的数据,只取type这一字段等于lblType这个Label控件的文本内容(去掉前面空格),说白了就是筛选type等于lblType.Text.Trim() 的那一些数据
dv.RowFilter = "type='" + lblType.Text.Trim() + "'"; dv.Sort = "name asc"
; dlDetail.DataSource = dv; dlDetail.DataBind(); }

DefaultView.ToTable(false, new string[] { "你要的列名", "你要的列名" });//多列只要这两列

DefaultView.ToTable(true, new string[] { "你要的列名", "你要的列名" });// DISTINCT 返回所有具有不同值的列。

DefaultView.Sort="字段名1 ASC,字段名2 DESC";//相当于 order by

DataTable.DefaultView.RowFilter里面只能写过滤条件,排序条件写到Sort属性中。

 

MenuDt.DefaultView.Sort = "M_BigOrder asc"; //相当于Order By
MenuDt.DefaultView.RowFilter = "M_Fid='0'";  //相当于Where

 

DataTable.Copy 方法

返回值

类型:System.Data.DataTable
新的 DataTable,它具有与该 DataTable 相同的结构(表架构和约束)和数据。
如果这些类已经过派生,则副本也具有相同的派生类。
Copy 将创建一个新 DataTable,后者与原始 DataTable 具有相同的结构和数据若要将结构复制到新的 DataTable,而不是复制到数据,请使用 Clone

 

转载于:https://www.cnblogs.com/likaixuan/p/4679502.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值