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技術交流


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章