| using SqlSugar; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Reflection; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
|   | 
| namespace WIDESEA_Core.Helper | 
| { | 
|     public static class ObjectExtension | 
|     { | 
|         public static List<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList) | 
|         { | 
|             List<T> list = new List<T>(); | 
|             foreach (Dictionary<string, object> dic in dicList) | 
|             { | 
|                 list.Add(dic.DicToModel<T>()); | 
|             } | 
|             return list; | 
|         } | 
|   | 
|         public static T DicToModel<T>(this Dictionary<string, object> dic) | 
|         { | 
|             T model = Activator.CreateInstance<T>(); | 
|             PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance); | 
|             foreach (var property in propertyInfos) | 
|             { | 
|                 object? value = null; | 
|                 if (!dic.TryGetValue(property.Name, out value)) | 
|                 { | 
|                     if (!dic.TryGetValue(property.Name.FirstLetterToUpper(), out value)) | 
|                     { | 
|                         if (!dic.TryGetValue(property.Name.FirstLetterToLower(), out value)) | 
|                         { | 
|                             continue; | 
|                         } | 
|                     } | 
|                 }; | 
|   | 
|                 SugarColumn? sugarColumn = property.GetCustomAttribute<SugarColumn>(); | 
|                 if (sugarColumn != null && sugarColumn.IsIdentity && (value == null || value.Equals(""))) | 
|                 { | 
|                     continue; | 
|                 } | 
|                 //if (value != null && sugarColumn != null && !sugarColumn.IsNullable) | 
|                 try | 
|                 { | 
|                     property.SetValue(model, value.ChangeType(property.PropertyType)); | 
|                 } | 
|                 catch | 
|                 { | 
|   | 
|                 } | 
|             } | 
|             return model; | 
|         } | 
|     } | 
| } |