欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Datatable array list<T> 之間的相互轉換
數組轉成dataset
objectArrayToDataSet.cs
     using System;
     using System.Collections.Generic;
     using System.Text;
     using System.Data;
     using System.Reflection;
     public class ArrayToDataSet
     {
         public static DataSet ObjectArrayToDataSet(object[] objArr)
         {
             if (objArr.Length == 0)
                 return null;
             DataSet ds = CreateDataSet(objArr[0].GetType());
             ds = FillDataSet(ds, objArr);
             return ds;
         }
         public static DataSet CreateDataSet(Type t)
         {
             DataSet ds = new DataSet();
             DataTable dt = new DataTable();
             ds.Tables.Add(dt);
             PropertyInfo[] pis = t.GetProperties();
             foreach (PropertyInfo pi in pis)
             {
                 DataColumn dc = new DataColumn(pi.Name, pi.PropertyType);
                 dt.Columns.Add(dc);
             }
             return ds;
         }
         public static DataSet FillDataSet(DataSet ds, object[] objArr)
         {
             DataColumnCollection dcs = ds.Tables[0].Columns;
             Type t = objArr[0].GetType();
             foreach (object obj in objArr)
             {
                 DataRow dr = ds.Tables[0].NewRow();
                 for (int i = 0; i < dcs.Count; i++)
                 {
                     dr[i] = t.InvokeMember(dcs[i].ColumnName, BindingFlags.GetProperty,
null, obj, null);
                 }
                 ds.Tables[0].Rows.Add(dr);
             }
             return ds;
         }
     }
轉:http://www.chenjiliang.com/Article/View.aspx?ArticleID=13472
在最近做的一個(gè)案子里,需要綁定實(shí)體數組比如Materiel[]綁定到界面(winform/webform都有),雖然可以直接綁定數組到GridView,但排序,過(guò)濾,查找等操作在數組里不是很方便。所以想借用DataTable做數據源。
最簡(jiǎn)單的方法就是手動(dòng)建一個(gè)DataTable。為每個(gè)Materiel的property建一個(gè)Column,然后指明其數據類(lèi)型。建好Table之后,循環(huán)為每個(gè)Materiel創(chuàng )建一個(gè)新行。如果多有幾個(gè)界面,雖然做起來(lái)都差不多,但代碼很難重用。
另外數據都是從WebService獲取,form不允許直接訪(fǎng)問(wèn)DB,所以也不能通過(guò)ADO.net獲取DataTable。
經(jīng)過(guò)一段時(shí)間的考量后決定見(jiàn)一個(gè)專(zhuān)用的Utility類(lèi)EntityCollectionsConvert,接口為
復制  保存DataTable ToDataTable(object[] entitys);
DataTable ToDataTable<T>(List<T> entitys)
實(shí)現的原理也比較簡(jiǎn)單
1.將判斷entitys不為空;
2.取出entitys的所有property
3.在DataTable中為每個(gè)property添加一列(包括元素類(lèi)型)
4.為每個(gè)entity添加一行。
5.自動(dòng)生成單元測試,測試,添加到項目中
復制  保存public static DataTable ToDataTable<T>(List<T> entitys)
{
    //檢查實(shí)體集合不能為空
    if (entitys == null || entitys.Count < 1)
    {
        throw new Exception("需轉換的集合為空");
    }
    //取出第一個(gè)實(shí)體的所有Propertie
    Type entityType = entitys[0].GetType();
    PropertyInfo[] entityProperties = entityType.GetProperties();
    //生成DataTable的structure
    //生產(chǎn)代碼中,應將生成的DataTable結構Cache起來(lái),此處略
    DataTable dt = new DataTable();
    for (int i = 0; i < entityProperties.Length; i++)
    {
        dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
    }
    //將所有entity添加到DataTable中
    foreach (object entity in entitys)
    {
        //檢查所有的的實(shí)體都為同一類(lèi)型
        if (entity.GetType() != entityType)
        {
            throw new Exception("要轉換的集合元素類(lèi)型不一致");
        }
        object[] entityValues = new object[entityProperties.Length];
        for (int i = 0; i < entityProperties.Length; i++)
        {
            entityValues[i] = entityProperties[i].GetValue(entity, null);
        }
        dt.Rows.Add(entityValues);
    }
    return dt;
}
 
IList轉DataTable
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
datatable與list的互相轉換
C#將xml轉化為datatable的代碼
C#
c# XML和實(shí)體類(lèi)之間相互轉換
.net中如何給數據表實(shí)體類(lèi)賦值的方法.
Asp.net Access 數據訪(fǎng)問(wèn)通用類(lèi)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久