간단 한 Datatable 변환 List, JSon

9344 단어 Datatable
여기에 Newtonsoft. JSon 을 사 용 했 습 니 다. 다운로드 주소: http://json.codeplex.com/
1. 모델 에 따라 대응 하 는 List 로 전환
 1 public static List<Model> ToList<Model>(this DataTable dt) where Model: class,new()  

 2 {  

 3   

 4     //           

 5     List<PropertyInfo> prlist = new List<PropertyInfo>();  

 6     //  Model              

 7     Type t = typeof(Model);  

 8     //  Model    Public       Model   DataTable         (PropertyInfo)           

 9     Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });  

10     //         

11     List<Model> oblist = new List<Model>();  

12     foreach (DataRow row in dt.Rows)  

13     {  

14         //  Model     

15         var Modelob = new Model();  

16         //       ,     

17         prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(Modelob, row[p.Name], null); });  

18         //         .  

19         oblist.Add(Modelob);  

20     }  

21     return oblist;  

22 }  


2. List < Hashtable > 로 바로 전환
특정 열 이 없 는 DataTable 을 List < Hashtable > 로 바 꾸 어 List < T > 기능 에 편리 하 게 사용 할 수 있 도록 합 니 다.둘째, MVC 가 제공 하 는 JSon () 을 직접 JSonResult 로 전환 할 수 있다.
 public List<Hashtable> GetList(DataTable dt)

        {

            List<Hashtable> mList = new List<Hashtable>();

            int count = dt.Rows.Count;

            if (count > 0)

            {

                for (int i = 0; i <= count-1; i++)

                {

                    Hashtable ht = new Hashtable();

                    foreach (DataColumn col in dt.Columns)

                    {

                        ht.Add(col.ColumnName, dt.Rows[i][col.ColumnName]);

                    }

                    mList.Add(ht);

                }

            }

            return mList;

        }

 
 
3. DataTable 전 JSon
//   :  List,  Json,          

        public string DtToJson( DataTable dt , int page, int rows)

        {

            string json = string.Empty;

            IList<Hashtable> mList = new List<Hashtable>();

            int count = dt.Rows.Count;

            int pageCount = (page + rows) > count ? count : (page + rows);

            if (pageCount > 0)

            {

                for (int i = page; i <= pageCount - 1; i++)

                {

                    Hashtable ht = new Hashtable();

                    foreach (DataColumn col in dt.Columns)

                    {

                        ht.Add(col.ColumnName, dt.Rows[i][col.ColumnName]);

                    }

                    mList.Add(ht);

                }

                json = JsonConvert.SerializeObject(new {total=count,rows= mList });

            }

            return json;

        }
//   :    ,  datatable Json,         Newtonsoft.Json.dll 

using Newtonsoft.Json;

using Newtonsoft.Json.Converters;



public string DtToJson(DataTable dt)

{

result=JsonConvert.SerializeObject(dt, new DataTableConverter());

return result;

}
//   :  List mvc   Json  Jsonresult

public ActionResult Select(int page, int rows)

{

    var UserList=GetList(SelectUserTable());

    var List = UserList.Skip((page - 1) * rows).Take(rows);

    int length = UserList.Count();

    var result = Json(new { total = length.ToString(), rows = List });

    result.ContentType = "text/html";

    return result;

}

 
 

좋은 웹페이지 즐겨찾기