datatable或dataset應用

1.table的主要操作及應用:
1.1.table的讀取:
1.1.1. DataSet dsHui = flow.GetSpecialSign(processId);
 if (dsHui != null&dsHui.Tables[0].Rows.Count > 0)
            {
               for (int i = 0; i < dsHui.Tables[0].Rows.Count; i++)
                {
                    arruser += dsHui.Tables[0].Rows[i]["user_name"].ToString() + ",";

                    if (dsHui.Tables[0].Rows[i]["user_name"].ToString().Equals(userName))
                    {
                        btnConfirm.Visible = false;
                    }
                  }
                    ViewState["SpecialUsers"] = arruser;
          }
也可以用:DataRowCollection
         DataRowCollection processes = ds.Tables[0].Rows;
        string processId = processes[Convert.ToInt32(procNo) - 1]["ProcessId"].ToString();


1.1.2. DataTable dtDiscussionListInfo = dsDiscussionListInfo.Tables[0];
            dtDiscussionListInfo.Columns.Add("SN");                      //添加新列
            for (int i = 0; i < dtDiscussionListInfo.Rows.Count; i++)
               {
                dtDiscussionListInfo.Rows[i]["SN"] = (i + 1).ToString();  //給新列附值
                }
1.2.3.DataTable tmp = new DataTable();
        tmp.Columns.Add(new DataColumn(  "Corporation",typeof(string)));  //新建行

 

 

3.SqlDataReader的主要操作及應用:
3.1
if (rdr.Read())
 {
    apaFile = new ApaFileInfo(rdr.GetGuid(0), rdr[1].ToString(), rdr[2].ToString())
 }//rdr[1]是代表當前行的第二列.也可以是rdr["列名"]來讀取.


4.1合并表(相同相同列的兩表合并):
4.1.1(通過DataView的方法):
DataTable dt1,dt2,dtTest1,dtTest2;
DataView dv1=dt1.DefaultView;//視圖
DataView dv2=dt2.DefaultView;
dv1.Sort="列名";//按列名將視圖排序
dv2.Sort="列名";
dtTest1=dv1.ToTable();//將視圖轉成表
dtTest2=dv2.ToTable();
dtTest1.Merge(dtTest2);//將兩將表合并


4.1.2 表過濾
        /// <summary>
        /// 將查詢結果過濾方法
        /// </summary>
        /// <param name="expression">過濾字符</param>
        private DataTable QueryExpression(string expression, DataTable dtCases, string sort)
        {
            DataTable dtResult = dtCases.Clone();

            DataRow[] d = dtCases.Select(expression, sort);
            foreach (DataRow dr in d)
            {
                dtResult.Rows.Add(dr.ItemArray);
            }
            return dtResult;
        }
5.1 datatable.select用法:(表過濾行)
DataRow[] d = dt.Select(expression, sort);
//string expression = "row_number <=" + iShowCount.ToString();
//string sort="列名 asc/desc";

5.2 DataTable dt1 = dt2.Clone();//複製dt1的表結構,其實dt1里面只有表結構而沒有數據;


6.1 轉換表(即增加多減少表的列數操作對象一個表,):將TaskListDataTable表的列減少為兩個指定列的dtSessionTable表
DataTable TaskListDataTable;
 DataTable dtSessionTable = new DataTable();
            dtSessionTable.BeginInit();
            dtSessionTable.Columns.Add("case_id");
            dtSessionTable.Columns.Add("process_id");
            dtSessionTable.EndInit();
            DataRow dtSessionRow;
            if (TaskListDataTable != null && TaskListDataTable.Rows.Count > 0)
            {
                foreach (DataRow drow in TaskListDataTable.Rows)
                {
                    if (!string.IsNullOrEmpty(drow["case_id"].ToString()))
                    {
                        dtSessionRow = dtSessionTable.NewRow();
                        dtSessionRow[0] = drow["case_id"].ToString();
                        dtSessionRow[1] = drow["process_id"].ToString();
                        dtSessionTable.Rows.Add(dtSessionRow);
                    }
                }
            }
6.2轉換表:(對象是兩個表,將一個表的某幾列合并到另一個表上)
 將dsTemp表中的兩個列加到dtResult表上
                    dtResult.Columns.Add("urgency_degree");
                    dtResult.Columns.Add("amount");
                        if (dsTemp != null && dsTemp.Tables[0].Rows.Count == dtResult.Rows.Count)
                        {
                            for (int i = 0; i < dtResult.Rows.Count; i++)
                            {
                                for (int j = 0; j < dsTemp.Tables[0].Rows.Count; j++)
                                {
                                    if (dtResult.Rows[i]["case_id"].ToString().Trim() == dsTemp.Tables[0].Rows[j]["case_id"].ToString().Trim())
                                    {
                                        dtResult.Rows[i]["urgency_degree"] = dsTemp.Tables[0].Rows[j]["urgency_degree"].ToString().Trim();
                                        dtResult.Rows[i]["supplier"] = dsTemp.Tables[0].Rows[j]["supplier"].ToString().Trim();

                                        dtResult.Rows[i]["amount"] = dsTemp.Tables[0].Rows[j]["amount"].ToString().Trim();
                                        break;
                                    }
                                }
                            }
                        }


6.3 RowFilter取得或設定用來篩選 DataView 中檢視的資料列的運算式。
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "(ProcessName = '會計確認'  or ProcessName = '財務經辦' or FlowOrder = 1) and FinishDate is not null";

 

7.分頁
DataTable dt = dtResult.Clone();
                DataRow dr;
                for (int i = 0; i < ItemCount; i++)
                {
                    dr = dt.NewRow();
                    if (i < PageCurrent * PageSize && i >= (PageCurrent - 1) * PageSize)
                    {
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            try
                            {
                                dr[j] = dtResult.Rows[i - (PageCurrent - 1) * PageSize][j];
                            }
                            catch (Exception ex)
                            {
                                string s = ex.Message;
                                return dt;

                            }
                        }
                    }
                    dt.Rows.Add(dr);
                }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值