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

网站推广平台排行plc编程培训机构

网站推广平台排行,plc编程培训机构,网站后台编辑器编辑内容无法显示,自己的域名搭建网站背景介绍 在软件开发中肯定免不了和数据库打交道#xff0c;我们对数据的增删改查最终会转化为SQL在数据库中执行。从SQLServer中查出数据一般有两种方式#xff1a;一是ADO.NET直接写SQL语句从数据中查出数据#xff0c;另一种是利用ORM框架得到数据。ADO.NET作为传统的数据…背景介绍 在软件开发中肯定免不了和数据库打交道我们对数据的增删改查最终会转化为SQL在数据库中执行。从SQLServer中查出数据一般有两种方式一是ADO.NET直接写SQL语句从数据中查出数据另一种是利用ORM框架得到数据。ADO.NET作为传统的数据库对接方式现在貌似已经不怎么流行了。让程序员直接写SQL实现增删改查功能存在一定和风险并且在程序中写SQL非常不利于程序的扩展和维护也不利于数据库的维护和更换极大的增加了程序的不稳定性。 其二、利用传统的ADO.NET Datatable的数据操作语法十分繁琐并且装箱拆箱的效率十分低下因此对数据的操作应该使用实体类。那么问题来了对于那些由于各种原因还没有利用起ORM框架但是想利用实体类进行数据操作的程序我们只需要将Datatable中的数据转化为实体类便可实现。废话不多说代码如下所示 public static class DatatableExtension {/// summary/// 将Datatable转化为指定实体类/// /summary/// typeparam nameT实体类对象类型/typeparam/// param name_sourceTable源DataTable/param/// returns返回转化后的DataTable/returnspublic static ListT ToListT(this DataTable _sourceTable) where T : new(){var resultLists new ListT();var pi typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly).ToList();if (_sourceTable null || pi null || pi.Count 0){//DataTable为null或实体类无属性则返回空的实体类}else{var wildColumnsLists new Liststring();//用于存放无法找到对应实体类属性的列,无后续操作var piFlagLists new ListTuplePropertyInfo, bool();//用于存放找到对应实体类属性的列二元组T1是列的数据类型T2是类型是否和实体类是否相等foreach (DataColumn col in _sourceTable.Columns){if (pi.Exists(p p.Name.Equals(col.ColumnName))){var prop pi.FirstOrDefault(q q.Name.Equals(col.ColumnName));piFlagLists.Add(Tuple.Create(prop, prop.PropertyType.Equals(col.DataType)));}else{wildColumnsLists.Add(col.ColumnName);}}foreach (DataRow dr in _sourceTable.Rows){T targetEntity new T();foreach (var piFlag in piFlagLists){if (piFlag.Item1.SetMethod ! null !piFlag.Item1.PropertyType.IsGenericType !dr.IsNull(piFlag.Item1.Name)){//赋值操作,如类型不相同则以实体类为准并赋值piFlag.Item1.SetValue(targetEntity, piFlag.Item2 ? dr[piFlag.Item1.Name] : Convert.ChangeType(dr[piFlag.Item1.Name], piFlag.Item1.PropertyType));}else{//无法赋值的情况1、set访问器不存在2、此属性为泛型3、Datatable中招不到需要转换的列名}}resultLists.Add(targetEntity);}}return resultLists;}/// summary/// 将筛选后的Datatable转化为指定实体类/// /summary/// typeparam nameT/typeparam/// param name_sourceTable源DataTable/param/// param name_predicate执行筛选的委托/param/// returns返回执行筛选转化后的DatatTable/returnspublic static ListT ToListT(this DataTable _sourceTable, FuncDataRow, bool _predicate) where T : new(){var whereDT _sourceTable.Where(_predicate);return whereDT.ToListT();}/// summary/// 在Datatable中使用Where方法进行筛选/// /summary/// param name_sourceTable源DataTable/param/// param name_whereFunc执行筛选的委托/param/// returns筛选后的DataTable/returnspublic static DataTable Where(this DataTable _sourceTable, FuncDataRow, bool _predicate){if (_sourceTable null){throw new ArgumentNullException(nameof(_sourceTable));}else{if (_predicate null){return _sourceTable;}else{var rowLists _sourceTable.AsEnumerable().Where(_predicate);var resultDataTable rowLists.Count() 0 ? _sourceTable.Clone() : rowLists.CopyToDataTable();return resultDataTable;}}}/// summary/// 在Datatable中调用Select方法进行选取/// /summary/// typeparam nameT选取结果类型/typeparam/// param name_sourceTable源Datatable/param/// param name_selector执行委托/param/// returns/returnspublic static ListT SelectT(this DataTable _sourceTable, FuncDataRow, T _selector){if (_sourceTable null){throw new ArgumentNullException(nameof(_sourceTable));}else{if (_selector null){throw new ArgumentNullException(nameof(_sourceTable));}else{var resultLsit _sourceTable.AsEnumerable().Select(_selector).ToList();return resultLsit;}}}/// summary/// 直接在当前DataTable对象上调用Any方法进行判断/// /summary/// param name_dt当前DataTable变量/param/// param name_anyFunc执行Any方法的委托/param/// returns结果true代表有元素满足条件false 代表没有元素满足条件/returnspublic static bool Any(this DataTable _dt, FuncDataRow, bool _predicate){if (null ! _dt null ! _predicate){var reuslt _dt.AsEnumerable().Any(_predicate);return reuslt;}else{throw new ArgumentNullException(string.Format({0}|{1}, null _dt ? nameof(_dt) : string.Empty, null _predicate ? nameof(_predicate) : string.Empty));}}/// summary/// DataTable的ForEach扩展方法/// /summary/// param name_dt当前dt/param/// param name_action要执行的委托/parampublic static void ForEach(this DataTable _dt, ActionDataRow _action){if (null _dt){throw new ArgumentNullException(nameof(_dt));}if (null _action){throw new ArgumentNullException(nameof(_action));}_dt.AsEnumerable().ToList().ForEach(row _action(row));}/// summary/// 获取当前DataTable对象的满足委托条件的第一个datarow/// /summary/// param name_dt/param/// param name_predicate/param/// returns/returnspublic static DataRow FirstOrDefault(this DataTable _dt, FuncDataRow, bool _predicate){if (null _predicate){throw new ArgumentNullException(nameof(_predicate));}return _dt.AsEnumerable().FirstOrDefault(_predicate);}/// summary/// 获取当前DataTable对象的满足委托条件最后一个datarow/// /summary/// param name_dt/param/// param name_predicate/param/// returns/returnspublic static DataRow LastOrDefault(this DataTable _dt, FuncDataRow, bool _predicate){if (null _predicate){throw new ArgumentNullException(nameof(_predicate));}return _dt.AsEnumerable().LastOrDefault(_predicate);} } 在DatatableExtension类中前两个两个扩展方法一个是方法直接将Datatable转化为指定的实体类第二个方法支持将Datatable进行委托筛选后转化为指定实体类操作代码如下图所示 string sql string.Format(SELECT A.UserID ,A.UserName ,A.UserPwd ,FROM dbo.TabUsers AS A ); DataSet ds dbhelp.JustGetData(sql);//查询出sql语句对应的数据 ListTabUser UserLists ds.Tables[0].ToListTabUser();//将DataTable转化为TabUser实体类 ListTabUser easyUserLists ds.Tables[0].ToListTabUser(p p[UserName].ToString().Contains(车间));//筛选出UserName包含“车间”字段的数据public class TabUser:EntityBase {public string UserName { get; set; }public string UserPwd { get; set; }public long UserID { get; set; } }
http://www.pierceye.com/news/284436/

相关文章:

  • 宝安做棋牌网站建设哪家便宜wordpress 导出html5
  • 网页制作与网站建设的发展趋势设想wordpress必装插件
  • 网站模板下载百度云链接怎么做的学做粤菜的网站
  • 牛栏前网站建设整站优化推广品牌
  • 太原做网站找谁阳江公司做网站
  • 企业网站aspwordpress原生相册
  • 重庆网站建设哪家公司那家好企业宣传软文
  • 如何选择营销网站建设什么网站做优化最好?
  • 个人博客网站模板素材网站的运营方案
  • wordpress增加网站网页关键词jquery验证网站地址
  • 企业招聘网站模板网站页面设计需要遵循的六大原则
  • 网站界面设计说明关键词排名顾问
  • 滨江区网站开发公司贵阳住房和城乡建设局网站
  • 如何建设小网站邢台市天气预报15天
  • 网站收录量低怎么做舟山公司网站制作
  • 部队网站模板计算机网站建设员
  • 对象储存做网站微博内网站怎么做的
  • 运城做网站要多少钱谷歌网站英文
  • 校园网站建设的意见与建议做儿童交互网站
  • 7黄页网站建设网站建设培训会讲话
  • 百度推广公司地址苏州优化方式
  • 做一个电商网站建设银行网站打不开用什么浏览器
  • 保定住房和城乡建设局网站沙洋网站定制
  • 北京电脑培训网站网站首页怎么做全屏swf
  • 网站建设 设计 优化 维护爱站网关键词挖掘工具
  • 做电影收费网站二级域名查询
  • 销售网站模板a5站长网网站交易
  • 网站需要怎么做的吗做营销网站那个好
  • 苏州网站建设软件收费广东网站设计哪家专业
  • 中国产品网免费网站网站自定义功能实现