国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#將DataTable轉(zhuǎn)換成list的方法

2019-10-29 21:43:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了C#將DataTable轉(zhuǎn)換成list的方法,實(shí)例分析了DataTable轉(zhuǎn)換成list及數(shù)據(jù)分頁(yè)的技巧,需要的朋友可以參考下
 

本文實(shí)例講述了C#將DataTable轉(zhuǎn)換成list及數(shù)據(jù)分頁(yè)的方法。分享給大家供大家參考。具體如下:

 

復(fù)制代碼代碼如下:
/// <summary>  
 /// 酒店評(píng)論列表-分頁(yè)  
/// </summary>  
/// <param name="userId"></param>  
/// <param name="pageIndex">當(dāng)前頁(yè)</param>  
/// <param name="pageCount">總頁(yè)數(shù)</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,用戶評(píng)論  
         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()  //這個(gè)list是查出全部的用戶評(píng)論  
                     select new CommentInfo  
                     {  
                         Id = p.Field<int>("hid"), //p.Filed<int>("Id") 其實(shí)就是獲取DataRow中ID列。即:row["ID"]  
                         HotelImages = p.Field<string>("images"),  
                         HotelName = p.Field<string>("hotelName"),  
                         Comment = p.Field<string>("comment")  
                     }).ToList(); //將這個(gè)集合轉(zhuǎn)換成list  
             int pageSize = 10; //每頁(yè)顯示十條數(shù)據(jù)  
  
             //獲取總頁(yè)數(shù)  
             pageCount = list.Count % pageSize == 0 ? ((list.Count - pageSize >= 0 ? (list.Count / pageSize) : (list.Count == 0 ? 0 : 1))) : list.Count / pageSize + 1;  
  
             //這個(gè)list 就是取到10條數(shù)據(jù)  
             //Skip跳過(guò)序列中指定數(shù)量的元素,然后返回剩余的元素。  
             //Take序列的開(kāi)頭返回指定數(shù)量的連續(xù)元素。  
             list = list.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList(); //假設(shè)當(dāng)前頁(yè)為第三頁(yè)。這么這里就是跳過(guò) 10*(3-1) 即跳過(guò)20條數(shù)據(jù),Take(pageSize)的意思是:取10條數(shù)據(jù),既然前面已經(jīng)跳過(guò)前20條數(shù)據(jù)了,那么這里就是從21條開(kāi)始,取10條咯  
         }  
     }  
     catch (Exception ex)  
     {  
         // write log here  
     }  
     return list;  
}

 

將一個(gè)DataTable轉(zhuǎn)換成一個(gè)List
首先定義一個(gè)接收DataTable字段列的類 。類的字段與DataTable的列字段一致

復(fù)制代碼代碼如下:
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; }  
    }  
}

 

 

復(fù)制代碼代碼如下:
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轉(zhuǎn)換成一個(gè)list  
        /// </summary>  
        /// <returns>返回一個(gè)List<User>對(duì)象</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>(); //創(chuàng)建一個(gè)List<User>的實(shí)例  
            if (dt != null && dt.Rows.Count > 0)  
            {  
                //AsEnumerable():返回一個(gè)IEnumerable<T> 對(duì)象,其泛型參數(shù) T 為 System.Data.DataRow。  
                list = (from p in dt.AsEnumerable()  
                        select new User  //new一個(gè)User對(duì)象  
                        {  
                            Id = p.Field<int>("id"),//p.Filed<int>("id") 其實(shí)就是獲取DataRow中ID列。即:row["ID"] 然后將它賦值給User類的Id字段。  
                            UserName = p.Field<string>("UserName"),  
                            Age = p.Field<int>("Age"),  
                            Gender = p.Field<int>("Gender")  
                        }).ToList(); //將這個(gè)User類對(duì)象轉(zhuǎn)換成list  
            }  
            int dataCount = list.Count; // 總的數(shù)據(jù)條數(shù)。  
            int pageSize=10;//每頁(yè)顯示多少條數(shù)據(jù)。              
            int pageCount; //總頁(yè)數(shù)。  
            int currentPage=3;//當(dāng)前頁(yè)。--這里假設(shè)當(dāng)前頁(yè)為第3頁(yè)。  
            pageCount = dataCount % pageSize == 0 ? (dataCount < pageSize ? (dataCount==0?0:1): (dataCount / pageSize)) : (dataCount / pageSize + 1); 

 

     //這個(gè)list 就是取到10條數(shù)據(jù)    
            //Skip跳過(guò)序列中指定數(shù)量的元素,然后返回剩余的元素。    
            //Take序列的開(kāi)頭返回指定數(shù)量的連續(xù)元素。    
            list = list.Skip(pageSize * (currentPage - 1)).Take(pageSize).ToList(); //假設(shè)當(dāng)前頁(yè)為第3頁(yè)。這么這里就是跳過(guò) 10*(3-1) 即跳過(guò)20條數(shù)據(jù),Take(pageSize)的意思是:取10條數(shù)據(jù),既然前面已經(jīng)跳過(guò)前20條數(shù)據(jù)了,那么這里就是從21條開(kāi)始,取10條咯    
            return list;   
        }          
    }  
}

 

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 射洪县| 黄山市| 治多县| 海阳市| 黎平县| 威信县| 鄱阳县| 八宿县| 太原市| 崇阳县| 合肥市| 辉县市| 白玉县| 十堰市| 从化市| 湾仔区| 遂平县| 池州市| 临夏县| 津南区| 都江堰市| 合水县| 通化市| 轮台县| 邳州市| 襄城县| 沙田区| 尉犁县| 富宁县| 临夏县| 宁乡县| 沂水县| 乳山市| 梨树县| 沽源县| 云龙县| 汽车| 宁波市| 兴文县| 札达县| 兴文县|