public List <IViewModel> getViewModel <T>(IEnumerable <T> dbModel, Table_Type type) where T : class { List <IViewModel> datas = new List <IViewModel>(); var obj = FactoryRegistry.GetInstance(type); if (dbModel == null || obj == null) { return(datas); } var viewpros = obj.GetType().GetProperties(); if (!dbModel.Any()) { return(datas); } var dbpros = dbModel.First().GetType().GetProperties(); dbModel.ToList().ForEach(db => { obj = FactoryRegistry.GetInstance(type); foreach (var item in viewpros) { var p = dbpros.FirstOrDefault(x => x.Name.ToUpper() == item.Name.ToUpper()); if (p != null) { var _pt = p.PropertyType; if (_pt == typeof(string)) { item.SetValue(obj, p.GetValue(db)); } else if (_pt == typeof(DateTime) || _pt == typeof(Nullable <DateTime>)) { if (p.GetValue(db) != null) { item.SetValue(obj, TypeTransfer.objDateToString(p.GetValue(db))); } else { item.SetValue(obj, string.Empty); } } else { if (p.GetValue(db) != null) { item.SetValue(obj, p.GetValue(db).ToString()); } else { item.SetValue(obj, string.Empty); } } } } datas.Add(obj); }); return(datas); }
/// <summary> /// dataRow to ViewModel /// </summary> /// <param name="item"></param> /// <param name="titles"></param> /// <param name="type"></param> /// <returns></returns> public List <IViewModel> getViewModel(IEnumerable <DataRow> items, List <string> titles, Table_Type type) { List <IViewModel> datas = new List <IViewModel>(); var obj = FactoryRegistry.GetInstance(type); if (obj == null) { return(datas); } var pros = obj.GetType().GetProperties(); if (!items.Any() || items.First().ItemArray.Count() != titles.Count) { return(datas); } items.ToList().ForEach(item => { obj = FactoryRegistry.GetInstance(type); for (int i = 0; i < titles.Count; i++) //每一行所有資料 { string data = null; if (item[i].GetType().Name.Equals("DateTime")) { data = TypeTransfer.objDateToString(item[i]); } else { data = TypeTransfer.objToString(item[i]); } if (!data.IsNullOrWhiteSpace()) //資料有值 { var PInfo = pros.Where(x => x.Name.Trim().ToLower() == titles[i].Trim().ToLower()) .FirstOrDefault(); if (PInfo != null) { PInfo.SetValue(obj, data); } } } datas.Add(obj); }); return(datas); }