C#将DataTable转换成list的方法
本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下:
/// <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 = ; 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 > ) { 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 = ; //每页显示十条数据 //获取总页数 pageCount = list.Count % pageSize == ? ((list.Count - pageSize >= ? (list.Count / pageSize) : (list.Count == ? : ))) : list.Count / pageSize + ; //这个list 就是取到10条数据 //Skip跳过序列中指定数量的元素,然后返回剩余的元素。 //Take序列的开头返回指定数量的连续元素。 list = list.Skip(pageSize * (pageIndex - )).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 { /// <summary> /// 用户信息 /// </summary> 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 { /// <summary> /// 将DataTable转换成一个list /// </summary> /// <returns>返回一个List<User>对象</returns> public List<User> TableToList() { string sql = "select * from T_User"; //T_User表里总共有 id,UserName,Age,Gender四列 DataTable dt= SqlHelper.ExecuteDataTable(sql,null); var list = new List<User>(); //创建一个List<User>的实例 if (dt != null && dt.Rows.Count > ) { //AsEnumerable():返回一个IEnumerable<T> 对象,其泛型参数 T 为 System.Data.DataRow。 list = (from p in dt.AsEnumerable() select new User //new一个User对象 { Id = p.Field<int>("id"),//p.Filed<int>("id") 其实就是获取DataRow中ID列。即:row["ID"] 然后将它赋值给User类的Id字段。 UserName = p.Field<string>("UserName"), Age = p.Field<int>("Age"), Gender = p.Field<int>("Gender") }).ToList(); //将这个User类对象转换成list } int dataCount = list.Count; // 总的数据条数。 int pageSize=;//每页显示多少条数据。 int pageCount; //总页数。 int currentPage=;//当前页。--这里假设当前页为第3页。 pageCount = dataCount % pageSize == ? (dataCount < pageSize ? (dataCount==?:): (dataCount / pageSize)) : (dataCount / pageSize + );
//这个list 就是取到10条数据 //Skip跳过序列中指定数量的元素,然后返回剩余的元素。 //Take序列的开头返回指定数量的连续元素。 list = list.Skip(pageSize * (currentPage - )).Take(pageSize).ToList(); //假设当前页为第3页。这么这里就是跳过 10*(3-1) 即跳过20条数据,Take(pageSize)的意思是:取10条数据,既然前面已经跳过前20条数据了,那么这里就是从21条开始,取10条咯 return list; } } }
C#将DataTable转换成list的方法的更多相关文章
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- 将DataTable转换成CSV文件
DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表.CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记 ...
- DataTable转换成json字符串
将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...
- DataTable转换成匿名类的List类型
DataTable转换成匿名类的List类型 因为匿名类是不能够 Activator.CreateInstance进行反射实例化的 /// <summary> /// 匿名类的转换方式 ...
- 将DataTable转换成Json格式
方法一: 将DataTable数据拼接成json字符串,方法如下: ///<summary> /// dataTable转换成Json格式 ///</summary> ///& ...
随机推荐
- angularjs中关于当前路由再次点击强制刷新
angularjs中,有一个机制,就是当前路由再次点击的时候,不会再刷新页面,这实在是愁坏了包子,因为业务人员要求一定要刷新,于是我各种百度,然并卵....呜呜呜~~~~~ 于是乎,我就想到写指令了, ...
- bzoj1816 扑克牌
Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1套 ...
- poj.2419.Forests (枚举 + set用法)
Forests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5782 Accepted: 2218 Descripti ...
- cocos2d-x避免手动修改android.mk文件来编译
编辑android.mk文件,替换为如下内容 LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(call my-dir) include $(CLEAR_VAR ...
- HLG2081分苹果
苹果 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 39(24 users) Total Accepted: 29(22 users) ...
- 友盟消息推送和更新XML配置
<receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:e ...
- Objective-C中的instancetype和id区别
目录(?)[-] 有一个相同两个不同相同 Written by Mattt Thompson on Dec 10th 2012 一什么是instancetype 二关联返回类型related resu ...
- 【SpringMVC】SpringMVC系列14之SpringMVC国际化
14.SpringMVC国际化 14.1.概述 14.2.用户切换选择语言
- HTML模仿桌面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android 返回桌面的Intent
Intent MyIntent = new Intent(Intent.ACTION_MAIN); MyIntent.addCategory(Intent.CATEGORY_HOME); startA ...