DataSet DataTable 分页及查询
public class DataSetHelper { public static DataSet SplitDataSet(DataSet ds, int pageSize, int pageIndex) { DataSet vds = new DataSet(); vds = ds.Clone(); if (pageIndex < 1) pageIndex = 1;//如果小于1,取第一页 //if ((ds.Tables[0].Rows.Count + pageSize) <= (pageSize * pageIndex)) pageIndex = 1; int fromIndex = pageSize * (pageIndex - 1);//开始行 int toIndex = pageSize * pageIndex - 1; //结束行 for (int i = fromIndex; i <= toIndex; i++) { if (i >= (ds.Tables[0].Rows.Count)) //到达这一行,退出 break; vds.Tables[0].ImportRow(ds.Tables[0].Rows[i]); } ds.Dispose(); return vds; } /// <summary> /// 根据索引和pagesize返回记录 /// </summary> /// <param name="dt">记录集 DataTable</param> /// <param name="PageIndex">当前页</param> /// <param name="pagesize">一页的记录数</param> /// <returns></returns> public static DataTable SplitDataTable(DataTable dt, int PageIndex, int PageSize) { if (dt == null) { return null; } if (PageIndex == 0) return dt; DataTable newdt = dt.Clone(); //newdt.Clear(); int rowbegin = (PageIndex - 1) * PageSize; int rowend = PageIndex * PageSize; if (rowbegin >= dt.Rows.Count) return newdt; if (rowend > dt.Rows.Count) rowend = dt.Rows.Count; for (int i = rowbegin; i <= rowend - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); } return newdt; } public static DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构 foreach (DataRow row in rows) tmp.Rows.Add(row.ItemArray); // 将DataRow添加到DataTable中 return tmp; } }
分页
DataSet ds = DBHelper.ExecteSql(strSql, para); DataTable dt = DataSetHelper.SplitDataTable(ds.Tables[0], count / 15, 15); dt.TableName = "Table"; DataTable dt1 = dt.Copy(); ds.Tables.Remove(ds.Tables[0]); ds.Tables.Add(dt1);
查询
DataSet ds = DBHelper.ExecteSql("存储过程", sp); DataRow[] rows = ds.Tables[0].Select("", "createtime desc"); DataView dv = ds.Tables[0].DefaultView; dv.Sort = "createtime desc"; DataTable dt2 = dv.ToTable(); ds.Clear(); while (ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; if (ds.Tables.CanRemove(table)) { ds.Tables.Remove(table); } } ds.Tables.Add(dt2);
作者:YmNets
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?