修行的嘟嘟 / 編程開發 / C# DataSet轉換為List

0 0

   

C# DataSet轉換為List

2017-08-31  修行的嘟嘟
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace Base
{
    public class BaseClass
    {
        //DataSet轉換為List
        /// <summary>
        /// DataSet轉換為List
        /// </summary>
        /// <typeparam name="T">模板</typeparam>
        /// <param name="dataSet">待轉換數據</param>
        /// <returns>轉換后數據</returns>
        public static List<T> ConvertToList<T>(DataTable dataTable)
        {
            List<T> buffer = new List<T>();

            // 遍歷所有行
            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                DataRow row = dataTable.Rows[i];

                T t = Activator.CreateInstance<T>();

                // 遍歷所屬性
                foreach (System.Reflection.PropertyInfo property in typeof(T).GetProperties())
                {
                    // 該屬性包含在集合中
                    if (dataTable.Columns.Contains(property.Name) && !property.Name.Equals("Id"))
                    {
                        // 該屬性值不是空
                        if (row[property.Name] != DBNull.Value && row[property.Name] != null)
                        {
                            // 整型
                            if (property.PropertyType.Equals(typeof(int)))
                            {
                                property.SetValue(t, Convert.ToInt32(row[property.Name]), null);
                            }
                            else if (property.PropertyType == typeof(double))
                            {
                                property.SetValue(t, Convert.ToDouble(row[property.Name]), null);
                            }
                            else if (property.PropertyType.Equals(typeof(string)))
                            {
                                property.SetValue(t, row[property.Name].ToString(), null);
                            }
                            else if (property.PropertyType.Equals(typeof(DateTime)))
                            {
                                property.SetValue(t, Convert.ToDateTime(row[property.Name]), null);
                            }
                            else
                            {
                                property.SetValue(t, row[property.Name], null);
                            }
                        }
                    }
                }
                buffer.Add(t);
            }

            return buffer;
        }
    }
}

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。如發現有害或侵權內容,請點擊這里 或 撥打24小時舉報電話:4000070609 與我們聯系。

    猜你喜歡

    0條評論

    發表

    請遵守用戶 評論公約

    類似文章 更多
    喜歡該文的人也喜歡 更多

    河南快赢481视频在线直播