コード例 #1
0
ファイル: CommonForIT.cs プロジェクト: wcsy0827/IFRS9
        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);
        }
コード例 #2
0
ファイル: Common.cs プロジェクト: wcsy0827/IFRS9
        /// <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);
        }