DataTable中的Clone以及Select用法

在做的项目中有评论功能,要求是如果是社区主任的回复,就自动置顶,代表是官方的回复,原来的数据库中没的这个置顶字段,所以就想到 了在New出来的DataTable中来实现这个功能。

    /// <summary>
    /// 加载评论信息
    /// </summary>
    private void LoadData()
    {
        string strSql = ViewState["strSql"].ToString();
        //Response.Write(strSql);
        DataTable myDt = myDbAccess.GetTable(strSql);

        DataTable DT = new DataTable();
       
        DT.Columns.Add("NickName");
        DT.Columns.Add("HeadPhoto");
        DT.Columns.Add("UserNo");
        DT.Columns.Add("CommentDate");
        DT.Columns.Add("CommentContent");
        DT.Columns.Add("IfTop",typeof(Int16));//如果是社区主任回复的,就自动置顶=1,代表官方回复

        for (int i = 0; i < myDt.Rows.Count; i++)
        {
            string strHeadPhoto, strSex;
            DataRow dr = DT.NewRow();
            dr["CommentDate"] = myDt.Rows[i]["cDatetime"].ToString();
            dr["CommentContent"] = myDt.Rows[i]["cContent"].ToString();
            dr["NickName"] = myDt.Rows[i]["NickName"].ToString();
            //dr["UserNo"] = myDt.Rows[i]["UserNO"].ToString();
            //加密用户名  2014年2月19日12:30:26   小马
            dr["UserNo"] =CryptoHelper.Encrypt(myDt.Rows[i]["UserNO"].ToString(),"ABCDEFGHIJKLMNOP");
            strHeadPhoto = myDt.Rows[i]["HeadPhoto"].ToString();
            strSex = myDt.Rows[i]["Sex"].ToString();

            if (myDbAccess.FileExists(strHeadPhoto))
            {
                dr["HeadPhoto"] = strHeadPhoto;
            }
            else
            {
                dr["HeadPhoto"] = MyCheck.FormatUserPic(strHeadPhoto, strSex);
            }
            if (myDbAccess.CheckSNSHead(myDt.Rows[i]["UserNO"].ToString()))
            {
                dr["IfTop"] = 1;
            }
            else {
                dr["IfTop"] = 0;
            }
            DT.Rows.Add(dr);
        }

        //2014年3月24日10:43:04  小马   如果是社区主任回复的就置顶,代表官方回复 
      DataRow[] sortrows= DT.Select("1=1","IfTop DESC");//根据置顶来排序(第一个参数是where ,第二个参数是排序字段以及排序规则)
      DataTable SortDT = new DataTable();//创建新表
      SortDT = DT.Clone();//把上面的DT表结构复制到 新表中
      foreach (DataRow row in sortrows) {//为新表填充数据
          SortDT.Rows.Add(row.ItemArray);
      }


DataTable的Select()方法类似于我们用sql语句,这里用两个参数的方法是表示:第一个参数是需要传入的where条件,但是where不用写,第二个参数代表你需要排序的字段,直接写上排序字段名称和排序规则就可以了,不需要写order by.

Clone方法是把原来表中的定义好的列名这些复制到 新的表中 ,也就是复制表结构到 新表。


欢迎加入.net技术交流群.Net技术交流


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值