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> ///& ...
随机推荐
- matlab怎么定义一个数组
A=[];n=input('n=');%数组的长度for i=1:n fprintf('a%.0f=',i); x=input('');%分别输入各个数的值 A=[A,x];endA就可以得到长度为n ...
- 机器学习公开课笔记(8):k-means聚类和PCA降维
K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis ...
- Spring各个jar包的简介
spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-m ...
- Lucene4.3开发之分词器总结
Lucene4.3开发之分词器总结 http://java.chinaitlab.com/tools/940011.html
- 最短路&&最小生成树水题
训练赛20151122 5:00:00 Overview Problem Status Rank Discuss Current Time: 2015-11-23 17:33:18 Conte ...
- Linux MySQL 存储引擎详解
MySQL常用的存储引擎为MyISAM.InnoDB.MEMORY.MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM是MySQL的默认存储引擎.MyISAM不支 ...
- c++11 gcc4.8.x安装
c++11 gcc4.8.x安装 2014年12月11日默北 要安装PHP-CPP,需要c++11,否则就会报错,错误信息如下所示: g++ -Wall -c -g -std=c++11 -fpi ...
- Android中获取IMSI和IMEI
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); Str ...
- Segment Tree Build I & II
Segment Tree Build I The structure of Segment Tree is a binary tree which each node has two attribut ...
- Two Sum I & II
Two Sum I Given an array of integers, find two numbers such that they add up to a specific target nu ...