亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DataTable與List<T>互轉

發布時間:2020-05-25 23:04:35 來源:網絡 閱讀:4049 作者:小龍along 欄目:編程語言
  平時寫代碼的時候經常會遇到DataTable與List<T>之間的轉換操作,由于DataTable數據集合不像List<T>指定了對應的T類型,所以在操作的時候沒有List<T>方便,為了方便兩個集合的轉換,特此寫下以下類記錄兩者之間的互換。

    class ModelConvertHelper<T> where T : new()
{
    /// <summary>
    /// 把DataTable轉換成指定類型的List
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static IList<T> ConvertDataTableToList(DataTable dt)
    {
        // 定義集合    
        IList<T> ts = new List<T>();

        string tempName = "";

        foreach (DataRow dr in dt.Rows)
        {
            T t = new T();
            // 獲得此模型的公共屬性      
            PropertyInfo[] propertys = t.GetType().GetProperties();
            foreach (PropertyInfo pi in propertys)
            {
                tempName = pi.Name;  // 檢查DataTable是否包含此列    

                if (dt.Columns.Contains(tempName))
                {
                    // 判斷此屬性是否有Setter      
                    if (!pi.CanWrite) continue;

                    object value = dr[tempName];
                    if (value != DBNull.Value)
                        pi.SetValue(t, value, null);
                }
            }
            ts.Add(t);
        }
        return ts;
    }

    /// <summary>
    /// 把泛型List轉換成DataTable
    /// </summary>
    /// <param name="list"></param>
    /// <returns></returns>
    public static DataTable ConvertListToDataTable(List<T> list)
    {
        DataTable dt = new DataTable();
        // 獲得此模型的公共屬性      
        PropertyInfo[] propertys = typeof(T).GetProperties();
        foreach (PropertyInfo pi in propertys)
        {
            // 判斷此屬性是否有Getter      
            if (!pi.CanRead) continue;
            dt.Columns.Add(pi.Name, pi.PropertyType);
        }
        foreach (T item in list)
        {
            propertys = item.GetType().GetProperties();
            DataRow newRow = dt.NewRow();
            foreach (PropertyInfo pi in propertys)
            {
                if (!pi.CanRead) continue;
                newRow[pi.Name] = pi.GetValue(item);
            }
            dt.Rows.Add(newRow);
        }
        return dt;
    }
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海南省| 尚志市| 松阳县| 安图县| 永泰县| 朔州市| 五华县| 和平区| 威远县| 洪洞县| 长治市| 大姚县| 龙胜| 尚志市| 平邑县| 江陵县| 伊春市| 拜泉县| 汝阳县| 姜堰市| 华安县| 乌拉特前旗| 兴业县| 盘山县| 荆州市| 包头市| 阿克陶县| 南江县| 炉霍县| 公安县| 页游| 岐山县| 黄梅县| 文安县| 台前县| 河北省| 莱芜市| 永顺县| 尼勒克县| 崇文区| 锡林浩特市|