博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#将DataTable转换成list的方法
阅读量:6305 次
发布时间:2019-06-22

本文共 4715 字,大约阅读时间需要 15 分钟。

本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下:

///    /// 酒店评论列表-分页  ///   ///   /// 当前页  /// 总页数  /// 
   public static List
GetHotelCommentList(int userId, int pageIndex, out int pageCount)   {       var list = new List
();       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   telorder.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
("hid"), //p.Filed
("Id") 其实就是获取DataRow中ID列。即:row["ID"]                           HotelImages = p.Field
("images"),                           HotelName = p.Field
("hotelName"),                           Comment = p.Field
("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;  }

将一个DataTable转换成一个List

首先定义一个接收DataTable字段列的类 。类的字段与DataTable的列字段一致

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;    namespace WebApplication1  {      ///       /// 用户信息      ///       public class User      {          public int Id { get; set; }            public string UserName { get; set; }            public int Age { get; set; }            public int Gender { get; set; }      }  }
using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using JSON.Controllers;  using System.Data;    namespace WebApplication1  {      public class Class1      {          ///           /// 将DataTable转换成一个list          ///           /// 
返回一个List
对象
          public List
TableToList()          {              string sql = "select  * from T_User"; //T_User表里总共有 id,UserName,Age,Gender四列              DataTable dt= SqlHelper.ExecuteDataTable(sql,null);              var list = new List
(); //创建一个List
的实例              if (dt != null && dt.Rows.Count > 0)              {                  //AsEnumerable():返回一个IEnumerable
对象,其泛型参数 T 为 System.Data.DataRow。                  list = (from p in dt.AsEnumerable()                          select new User  //new一个User对象                          {                              Id = p.Field
("id"),//p.Filed
("id") 其实就是获取DataRow中ID列。即:row["ID"] 然后将它赋值给User类的Id字段。                              UserName = p.Field
("UserName"),                              Age = p.Field
("Age"),                              Gender = p.Field
("Gender")                          }).ToList(); //将这个User类对象转换成list              }              int dataCount = list.Count; // 总的数据条数。              int pageSize=10;//每页显示多少条数据。                          int pageCount; //总页数。              int currentPage=3;//当前页。--这里假设当前页为第3页。              pageCount = dataCount % pageSize == 0 ? (dataCount < pageSize ? (dataCount==0?0:1): (dataCount / pageSize)) : (dataCount / pageSize + 1);      //这个list 就是取到10条数据                //Skip跳过序列中指定数量的元素,然后返回剩余的元素。                //Take序列的开头返回指定数量的连续元素。                list = list.Skip(pageSize * (currentPage - 1)).Take(pageSize).ToList(); //假设当前页为第3页。这么这里就是跳过 10*(3-1) 即跳过20条数据,Take(pageSize)的意思是:取10条数据,既然前面已经跳过前20条数据了,那么这里就是从21条开始,取10条咯                return list;           }              }  }

 

转载于:https://www.cnblogs.com/ChineseMoonGod/p/6024637.html

你可能感兴趣的文章
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
iOS 学习资料汇总
查看>>
centos7 yum安装jdk
查看>>
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
查看>>