C# DataTable转List<Model>通用类

/// <summary>
/// DataTable转换为List&lt;Model&gt;
/// </summary>
public static class DataTableToListModel<T> where T : new()
{
    public static IList<T> ConvertToModel(DataTable dt)
    {
        //定义集合
        IList<T> ts = new List<T>();
        T t = new T();
        string tempName = "";
        //获取此模型的公共属性
        PropertyInfo[] propertys = t.GetType().GetProperties();
         foreach (DataRow row in dt.Rows)
        {         
            t = new T();
            foreach (PropertyInfo pi in propertys)
            {
                tempName = pi.Name;
                //检查DataTable是否包含此列
                if (dt.Columns.Contains(tempName))
                {
                    //判断此属性是否有set
                    if (!pi.CanWrite)
                        continue;
                    object value = row[tempName];
                    if (value != DBNull.Value)
                        pi.SetValue(t, value, null);
                }
            }
            ts.Add(t);
        }
        return ts;
    }
}
posted @ 2013-04-26 10:59  飛雲若雪  阅读(8116)  评论(2编辑  收藏  举报