当前位置: 首页 > news >正文

长治做网站公司哪里建设企业网站

长治做网站公司,哪里建设企业网站,新冠新增病例最新消息,网站开发的技术问题背景介绍 C#中实体类的操作十分简便#xff0c;一般情况下不需要涉及ADO.NET#xff0c;如果需要将实体类转化为Datatable#xff0c;这个时候就需要手动写一个方法了#xff0c;代码如下图所示#xff1a; public static class IEnumerableExtention{/// summary一般情况下不需要涉及ADO.NET如果需要将实体类转化为Datatable这个时候就需要手动写一个方法了代码如下图所示 public static class IEnumerableExtention{/// summary/// 将实体类转化为Datatable/// /summary/// typeparam nameT实体类类型/typeparam/// param name_ienu实体对象/param/// param name_tableName表名/param/// returns转化成的DataTable/returnspublic static DataTable ToDataTableT(this IEnumerableT _ienu, string _tableName tableFromList) where T : new(){DataTable resultTable new DataTable(_tableName);var pi typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly).ToList();if (_ienu null || pi null || pi.Count 0){//当实体类为空的时候返回空的DataTable}else{pi.ForEach(p { resultTable.Columns.Add(p.Name, p.PropertyType); });//生成Datatable列及列属性foreach (var _ie in _ienu){var dr resultTable.NewRow();foreach (var prop in pi){if (prop.GetMethod ! null){dr.SetField(prop.Name, prop.GetValue(_ie));}}resultTable.Rows.Add(dr);}}return resultTable;}/// summary/// 将实体类转化为DataSet/// /summary/// typeparam nameT实体类类型/typeparam/// param name_ienu实体对象/param/// param name_tableName表名/param/// returns转化成的DataSet/returnspublic static DataSet ToDataSetT(this IEnumerableT _ienu, string _tableName tableFromList) where T : new(){DataSet ds new DataSet();ds.Tables.Add(_ienu.ToDataTable(_tableName));return ds;}/// summary/// 将实体类的对象列表复制给另一个类型相同的实体类/// /summary/// typeparam nameT源实体类对象类型/typeparam/// param name_ienu源实体类/param/// returns返回的实体类/returnspublic static IEnumerableT CopyT(this IEnumerableT _ienu) where T : new(){var resultLists new ListT();var pi typeof(T).GetProperties(BindingFlags.Instance|BindingFlags.Public|BindingFlags.DeclaredOnly).ToList();if (null _ienu || null pi || pi.Count 0){//源实体类对象为空则返回空实体类}else{foreach (var _ie in _ienu){var resultList new T();foreach (var prop in pi){if (prop.SetMethod ! null prop.GetMethod ! null !prop.PropertyType.IsAbstract){prop.SetValue(resultList,prop.GetValue(_ie));}}resultLists.Add(resultList);}}return resultLists;}/// summary/// 将一个实体类对象列表复制给另一个类型相同的实体类支持筛选/// /summary/// typeparam nameT源实体类对象类型/typeparam/// param name_ienu源实体类/param/// param name_predicate筛选的委托/param/// returns/returnspublic static IEnumerableT CopyT(this IEnumerableT _ienu, FuncT, bool _predicate null) where T:new(){var resultLists new ListT();var pi typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).ToList();if (null _ienu || null pi || pi.Count 0){//源实体类对象为空则返回空实体类}else{if (_predicate ! null){_ienu _ienu.Where(_predicate);}else{foreach (var _ie in _ienu){var resultList new T();foreach (var prop in pi){if (prop.SetMethod ! null prop.GetMethod ! null !prop.PropertyType.IsAbstract){prop.SetValue(resultList, prop.GetValue(_ie));}}resultLists.Add(resultList);}}}return resultLists;}/// summary/// 将一个实体类对象列表复制给另一个类型不相同的实体类,支持筛选只复制名称和类型都相同的属性/// /summary/// typeparam nameTSource源实体类类型/typeparam/// typeparam nameTResult目标实体类类型/typeparam/// param name_ienu源实体类/param/// param name_predicate筛选的委托/param/// returns返回的实体类/returnspublic static ListTResult CopyToTSource, TResult(this IEnumerableTSource _ienu, FuncTSource, bool _predicate null) where TResult : new(){var resultLists new ListTResult();if (_ienu null){throw new ArgumentNullException(nameof(_ienu));}var piSource typeof(TSource).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).ToList();//获取来源实体类属性var piResult typeof(TResult).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).ToList();//获取返回实体类属性if (piSource null || piSource.Count 0 || piResult null || piResult.Count 0){//返回空实体类return resultLists;}if (null ! _predicate){_ienu _ienu.Where(_predicate);}if (_ienu.Count() 0)//判断来源实体类中列表数量{ListTuplePropertyInfo, bool PropLists new ListTuplePropertyInfo, bool();piResult.ForEach(p {if (piSource.Exists(q q.Name.Equals(p.Name))){PropLists.Add(Tuple.Create(p, p.PropertyType.Equals(piResult.FirstOrDefault(q q.Name.Equals(p.Name)).PropertyType)));}});foreach (var _ie in _ienu){var resultList new TResult();var samePropLists PropLists.Where(p p.Item2 true).ToList();//提取类型也相同的属性foreach (var prop in samePropLists){if (prop.Item1.GetMethod ! null _ie.GetType().GetProperty(prop.Item1.Name).SetMethod ! null){var value piSource.FirstOrDefault(p p.Name.Equals(prop.Item1.Name)).GetValue(_ie);prop.Item1.SetValue(resultList, value);}}resultLists.Add(resultList);}}return resultLists;}} IEnumerableExtention类中包含五个方法第一个直接将实体类转化为Datatable第二个是在第一个的基础上包了一层DataSet并返回。第三个和第四个是将实体类列表复制给类型相同的另一个实体类第四个支持筛选。第五个是将实体类复制给类型不相同的实体类但是只支持复制类型和名字都相同的属性。
http://www.zqtcl.cn/news/514436/

相关文章:

  • 射阳做企业网站哪家好wordpress 进销存
  • 青海个人旅游网站建设wordpress用户名密码加密方式
  • 安徽平台网站建设找哪家wordpress首页加登录
  • 雅安市住房和城乡建设局网站湖南全程电子化服务平台官网
  • dw做的上传网站打不开网页制作培训价格
  • 工程网站怎么做广州做网站平台
  • 成都网站建设 全美深圳定制网站建设
  • 邢台网站建设与制作陕西高速公路建设集团网站
  • 太原 招聘 网站建设 技术经理关于 建设 二级网站
  • 如何做网站店铺的模板著名的响应式网站有哪些
  • 相城区建设网站做网站 设计师很
  • python网站开发好吗广州软件外包
  • 山东能源集团 网站建设对网站建设功能的情况说明
  • 网站设计个人各种类型网站建设口碑好
  • 西安巨久科技网站建设嘚嘚笔记 wordpress主推
  • 杭州利兴建设官方网站上海专业网站建设费
  • 自适应网站制作费用中国建设网官方网站企业登录
  • h5网站和传统网站区别电子商务主要学什么就业方向及前景
  • 凡科建站弊端各学院二级网站建设通报
  • 做网站怎么注册营业执照民制作网站哪家便宜
  • 临沂做进销存网站推广软件公司
  • 网站前端建设唐山网站建设托管
  • 做效果图有哪些网站seo怎么做关键词排名
  • 深圳手机网站开发什么网站可以做英语题
  • 网站优化什么意思图片展示网站
  • 建德做网站米趋外贸网站建设
  • 国外优秀的设计网站八爪鱼磁力搜索引擎
  • 网站建设优化陕西网络营销推广方法与策略
  • 网站建设推广者怎样找到客户百度seo排名帝搜软件
  • 绵阳网站托管网站建设第一品牌