| | |
| | | using System; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | |
| | | { |
| | | public static class ObjectExtension |
| | | { |
| | | public static IEnumerable<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList) |
| | | 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) |
| | | { |
| | | T model = Activator.CreateInstance<T>(); |
| | | foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) |
| | | { |
| | | if (!dic.TryGetValue(property.Name, out object value)) continue; |
| | | property.SetValue(model, value?.ToString().ChangeType(property.PropertyType), null); |
| | | } |
| | | yield return model; |
| | | list.Add(dic.DicToModel<T>()); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public static T DicToModel<T>(this Dictionary<string, object> dic) |
| | |
| | | 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)) |
| | | object? value = null; |
| | | if (!dic.TryGetValue(property.Name, out value)) |
| | | { |
| | | if (!dic.TryGetValue(property.Name.FirstLetterToUpper(), out value)) |
| | | { |
| | |
| | | } |
| | | } |
| | | }; |
| | | property.SetValue(model, value?.ToString().ChangeType(property.PropertyType)); |
| | | |
| | | SugarColumn? sugarColumn = property.GetCustomAttribute<SugarColumn>(); |
| | | if (sugarColumn != null && sugarColumn.IsIdentity && (value == null || value.Equals(""))) |
| | | { |
| | | continue; |
| | | } |
| | | if (value != null && sugarColumn != null && !sugarColumn.IsNullable) |
| | | property.SetValue(model, value.ChangeType(property.PropertyType)); |
| | | } |
| | | return model; |
| | | } |