public static IEnumerable Parse (IEnumerable rows) where T : class, new(){ if (rows == null || Enumerable.FirstOrDefault (rows) == null) return (IEnumerable ) new T[0]; PropertyInfo[] properties = typeof (T).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty); List list = new List (); foreach (DataRow row in rows) { T instance = Activator.CreateInstance (); DbHelper.Parse((object) instance, (IEnumerable ) properties, row); list.Add(instance); } return (IEnumerable ) list;}private static void Parse(object obj, IEnumerable properties, DataRow row){ foreach (PropertyInfo propertyInfo in properties) { if (DataRowExtension.HasValue(row, propertyInfo.Name)) { try { propertyInfo.SetValue(obj, DbHelper.ConvertType(CultureInfo.CurrentCulture, row[propertyInfo.Name], propertyInfo.PropertyType), (object[]) null); } } catch{ } }}