将DataTable转换成list 及数据分页:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | /// <summary> /// 酒店评论列表-分页 /// </summary> /// <param name="userId"></param> /// <param name="pageIndex">当前页</param> /// <param name="pageCount">总页数</param> /// <returns></returns> public static List<CommentInfo> GetHotelCommentList( int userId, int pageIndex, out int pageCount) { var list = new List<CommentInfo>(); pageCount = 0; try { //查询酒店ID,名字,图片,用户ID,用户评论 string sql = string .Format( @"select hotels.hid,hotels.hotelName,hotels.images,hotelorder.UserID,user_HotelComment.comment from hotels with(nolock) join hotelorder with(nolock) join user_HotelComment on hotelorder.UserID=user_HotelComment.userID on hotels.hid=hotelorder.HotelID where hotelorder.UserID={0}" , userId); DataTable dt = SQLHelper.Get_DataTable(sql, SQLHelper.GetCon(), null ); if (dt != null && dt.Rows.Count > 0) { list = ( from p in dt.AsEnumerable() //这个list是查出全部的用户评论 select new CommentInfo { Id = p.Field< int >( "hid" ), //p.Filed<int>("Id") 其实就是获取DataRow中ID列。即:row["ID"] HotelImages = p.Field< string >( "images" ), HotelName = p.Field< string >( "hotelName" ), Comment = p.Field< string >( "comment" ) }).ToList(); //将这个集合转换成list int pageSize = 10; //每页显示十条数据 //获取总页数 pageCount = list.Count % pageSize == 0 ? ((list.Count - pageSize >= 0 ? (list.Count / pageSize) :(list.Count == 0 ? 0 : 1))) : list.Count / pageSize + 1; //这个list 就是取到10条数据 //Skip跳过序列中指定数量的元素,然后返回剩余的元素。 //Take序列的开头返回指定数量的连续元素。 list = list.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList(); //假设当前页为第三页。这么这里就是跳过 10*(3-1) 即跳过20条数据,Take(pageSize)的意思是:取10条数据,既然前面已经跳过前20条数据了,那么这里就是从21条开始,取10条咯 } } catch (Exception ex) { // write log here } return list; } |
C# AsEnumerable 找不到 ?? 添加引用 System.Data.DataSetExtensions
DataTable dt = new DataTable();
var test = dt.AsEnumerable();
//跳过dt的前200行,取后100行 即取得200-300行
test.Skip(200).Take(100);
或
dt = dt.AsEnumerable().Take(N).CopyToDataTable<DataRow>();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2011-02-15 VS软件配置管理说明-visualSVN_TortoiseSVN_AnkhSvn
2011-02-15 SVN: 源代码控制【Source Control Using VisualSVN Server and Tortois