DataTable筛选,取前N条数据,获取指定列数据

        #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
        /// <summary>
        /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
        /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc",1)
        /// </summary>
        /// <param name="dt">传入的DataTable</param>
        /// <param name="strExpr">筛选条件</param>
        /// <param name="strSort">排序条件</param>
        /// <param name="mode">1,直接用DefaultView按条件返回,效率较高;2,DataTable筛选,排序返回符合条件行组成的新DataTable</param>
        public static DataTable SortDataTable(DataTable dt, string strExpr, string strSort, int mode)
        {
            switch (mode)
            {
                case 1:
                    //方法一 直接用DefaultView按条件返回
                    dt.DefaultView.RowFilter = strExpr;
                    dt.DefaultView.Sort = strSort;
                    return dt;
                case 2:
                    //方法二 DataTable筛选,排序返回符合条件行组成的新DataTable
                    DataTable dt1 = new DataTable();
                    DataRow[] GetRows = dt.Select(strExpr, strSort);
                    //复制DataTable dt结构不包含数据
                    dt1 = dt.Clone();
                    foreach (DataRow row in GetRows)
                    {
                        dt1.Rows.Add(row.ItemArray);
                    }
                    return dt1;
                default:
                    return dt;
            }
        }
        #endregion
        #region 获取DataTable前几条数据
        /// <summary>
        /// 获取DataTable前几条数据
        /// </summary>
        /// <param name="TopItem">前N条数据</param>
        /// <param name="oDT">源DataTable</param>
        /// <returns></returns>
        public static DataTable DtSelectTop(int TopItem, DataTable oDT)
        {
            if (oDT.Rows.Count < TopItem) return oDT;

            DataTable NewTable = oDT.Clone();
            DataRow[] rows = oDT.Select("1=1");
            for (int i = 0; i < TopItem; i++)
            {
                NewTable.ImportRow((DataRow)rows[i]);
            }
            return NewTable;
        }
        #endregion

        #region 获取DataTable中指定列的数据
        /// <summary>
        /// 获取DataTable中指定列的数据
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <param name="tableName">新的DataTable的名词</param>
        /// <param name="strColumns">指定的列名集合</param>
        /// <returns>返回新的DataTable</returns>
        public static DataTable GetTableColumn(DataTable dt, string tableName, params string[] strColumns)
        {
            DataTable dtn = new DataTable();
            if (dt == null)
            {
                throw new ArgumentNullException("参数dt不能为null");
            }
            try
            {
                dtn = dt.DefaultView.ToTable(tableName, true, strColumns);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return dtn;
        }
        #endregion


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值