c#将datatable转换成list的方法

ChineseMoonGod ChineseMoonGod     2022-08-11     442

关键词:

本文实例讲述了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 = 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<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;  

}

将一个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 > 0)  

            {  

                //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=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;   

        }          

    }  

}

 

datatable转换成json的3种方法

...们需要将查询出的数据源格式比如:List<T>、DataTable转换为Json格式。特别在使用Extjs框架的时候,Ajax异步请求的数据格式就是Json。鉴于此,我今天来分享将DataTable转换成Json的3种方法。换句话说如何在ASP.NET将一个DataTable序列... 查看详情

c#将datatable的某一列转换成json格式的字符串

将datatable的某一列转换成json格式的字符串(转换完后自己在字符串前后加{})///<summary>///DataTable装换 Column数据 组合成json现在的格式 ///</summary>///<paramname="dt"></param>///<paramname="rowIndex"& 查看详情

将datatable转换成csv文件

  DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表。CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,... 查看详情

将datatable转换成csv文件

  DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表。CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,... 查看详情

将datatable转换成csv文件

  DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表。CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,... 查看详情

c#将datatable数据源转换成实体类

1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Data;4usingSystem.Reflection;56///<summary>7///将DataTable数据源转换成实体类8///</summary>9///<typeparamname="T">实体</typeparam> 查看详情

c#将查询返回的数据(一行多列)怎么转换成一列多行datatable?

最好能贴上例子代码,感谢参考技术ADataTable实现行列转换的方法,具体实现方法如下:protectedvoidPage_Load(objectsender,EventArgse)if(!IsPostBack)DataTablett=GetCrossTable(CreateDT());GridView1.DataSource=tt;GridView1.DataBind();//创建DataTableprotectedDataTableCreat... 查看详情

c#将一个datatable分解成多个datatable(代码片段)

..._greensky110  存在分表的缺陷的代码。  分表方法:///<summary>///分解数据表///</summary>///<paramname="orig 查看详情

将list转换为datatable的方法

publicstaticDataTableCopyToDataTable<T>(thisIEnumerable<T>array){varret=newDataTable();foreach(PropertyDescriptordpinTypeDescriptor.GetProperties(typeof(T)))ret.Columns.Add(dp.Name);foreac 查看详情

小5聊c#通过将datatable转为list泛型遇到的问题

1、报错信息如下2、原因因为update_time属性设置了只读,不可设置值,所以转换时会报错提示   查看详情

小5聊c#通过将datatable转为list泛型遇到的问题

1、报错信息如下2、原因因为update_time属性设置了只读,不可设置值,所以转换时会报错提示   查看详情

c#如何将object转换成数组

...候会提示"无法将类型为“System.Single[*]”的对象强制转换为类型“System.Single[]”。"错误..急求解答,谢谢有以下几种方法(1)可以通过重新定义来进行转换:object[]arr=newobject[]arr[iarr.Length];for(inti=0;i<iarr.Length;i++)arr[i]=iarr[i];(2)... 查看详情

datatable转换为其他对象

1.将DataTable类型的数据转换成List<T>集合1///<summary>2///将DataTable类型的数据转换成List<T>集合T实体3///</summary>4///<typeparamname="T"></typeparam>5///<paramname="dataTable"></p 查看详情

c#将linq数据集转换为datatable

C#将LINQ数据集转换为Datatable1.方法一:(测试可用)//通过一个公共类将LINQ数据集转换为datatablepublic DataTable LINQToDataTable<T>(IEnumerable<T>varlist){    DataTable dtReturn= ne 查看详情

如何将 List<string> 转换为 IEnumerable<ServiceReference.datatable> C# Silverlight WCF RIA Serv

】如何将List<string>转换为IEnumerable<ServiceReference.datatable>C#SilverlightWCFRIAServicesLINQtoSQL【英文标题】:HowtoconvertaList<string>toanIEnumerable<ServiceReference.datatable>C#SilverlightWCFRIAServices 查看详情

如何将datatable转换成list<t>

...可以很清晰的看懂我的思路。首先,这是我写的一个通用转换类,完成此类操作。也是实现这个功能最核心的部分:[java]viewplaincopyusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.Collections;usingSyst... 查看详情

将 DataTable 转换为字典 C#

】将DataTable转换为字典C#【英文标题】:TransformaDataTableintoDictionaryC#【发布时间】:2013-11-1120:08:14【问题描述】:我想知道如何将DataTable转换为Dictionary。我做了这样的事情。usingSystem.Linq;internalDictionary<string,object>GetDict(DataTable... 查看详情

c#怎么将json转换成datatable

["hasChildNode":"1","nodeId":"200","nodeName":"医药","nodeType":"文件夹","hasChildNode":"1","nodeId":"234","nodeName":"财会","nodeType":"... 查看详情