datatable转LIST

using  System;
using  System.Collections.Generic;
using  System.Collections;
using  System.Data;
 
namespace  CTHFramework
{
 
     /// <summary>
     /// DataTable转换成IList
     /// </summary>
     /// <typeparam name="T"></typeparam>
     public  class  TableToList<T>  where  T :  class new ()
     {
         public  static  IList<T> ToList(DataTable dt, Func<DataRow, T> func)
         {
             if  (dt ==  null  || dt.Rows.Count == 0)
             {
                 return  null ;
             }
             IList<T> list =  new  List<T>(dt.Rows.Count);
             foreach  (DataRow dr  in  dt.Rows)
             {
                 list.Add(func(dr));
             }
             return  list;
         }
     }
 
     public  class  DataItem
     {
         public  int  ID
         {
             get ;
             set ;
         }
 
         public  string  Name
         {
             get ;
             set ;
         }
 
         public  override  string  ToString()
         {
             return  string .Format( "ID:{0},Name:{1}" , ID.ToString(), Name);
         }
     }
      
     static  class  Program
     {
         static  void  Main( string [] args)
         {
             DataTable dt =  new  DataTable();
             dt.Columns.Add( new  DataColumn( "ID" typeof ( int )));
             dt.Columns.Add( new  DataColumn( "Name" typeof ( string )));
             for  ( int  i = 0; i < 10; i++)
             {
                 DataRow dr = dt.NewRow();
                 dr[ "ID" ] = i.ToString();
                 dr[ "Name" ] =  "Name"  + i.ToString();
                 dt.Rows.Add(dr);
             }
 
             IList<DataItem> list = TableToList<DataItem>.ToList(dt, DataRowToDataItem);
             foreach  ( var  item  in  list)
             {
                 Console.WriteLine(item.ToString());
             }
             Console.Read();
         }
 
         static  DataItem DataRowToDataItem(DataRow dr)
         {
             return  new  DataItem { ID = Convert.ToInt32(dr[ "ID" ]), Name = dr[ "Name" ].ToString() };
         }
          
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值