解决方案 »

  1.   


     public static List<T> EntityList<T>(DataTable dt)
            {
                if (dt == null || dt.Rows.Count == 0)
                {
                    return null;
                }
                List<T> list = new List<T>();
                T entity = default(T);
                foreach (DataRow dr in dt.Rows)
                {
                    entity = Activator.CreateInstance<T>();
                    PropertyInfo[] pis = entity.GetType().GetProperties();
                    foreach (PropertyInfo pi in pis)
                    {
                        if (dt.Columns.Contains(pi.Name))
                        {
                            if (!pi.CanWrite)
                            {
                                continue;
                            }
                            if (dr[pi.Name] != DBNull.Value)
                            {
                                Type t = pi.PropertyType;
                                if (t.FullName == "System.Guid")
                                {
                                    pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);
                                }
                                else
                                {
                                    pi.SetValue(entity, dr[pi.Name], null);
                                }
                            }
                        }
                    }
                    list.Add(entity);
                }
                return list;
            }