隐藏

C# DataTable转List通用类

发布:2015/8/16 22:21:42作者:管理员 来源:本站 浏览次数:1367

/// <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;
    }
}