91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

寿宁县| 白山市| 余干县| 海口市| 三都| 隆安县| 淅川县| 涞水县| 尖扎县| 五河县| 邻水| 岫岩| 河曲县| 当阳市| 彝良县| 同仁县| 康乐县| 沙雅县| 凉山| 噶尔县| 临高县| 滨海县| 缙云县| 太仓市| 冀州市| 青岛市| 鄂温| 毕节市| 平舆县| 武强县| 龙南县| 台州市| 陇西县| 鹤山市| 新密市| 棋牌| 梁平县| 平乡县| 无棣县| 吴忠市| 合肥市|