zoukankan      html  css  js  c++  java
  • PropertyInfo 简单用法

    • 一般用于两个类的数据绑定
    • 如下
      String DefaultDBConnection = "Data Source=111.111.0.111;Initial Catalog=ZMT;User ID=name;Password=pwd";//连接字符串
                  DataSet ds = new DataSet();
                  using (SqlConnection conn = new SqlConnection(DefaultDBConnection))//开启数据库连接
                  {
                      SqlTransaction trans = null;
                      string orgCode = "1=1";
                      string SQL = string.Format(@"select * from instockplan where ISPID=559
                                                  select * from InStockPlanDetails where ISPID=559 and @test");
                      conn.Open();
                      trans = conn.BeginTransaction();//打开一个事物
                      SqlCommand cmd = new SqlCommand(SQL, conn);
                      cmd.Parameters.AddWithValue("@test", orgCode);
                      cmd.Transaction = trans;//此次操作绑定当前的事物
                      SqlDataAdapter Da = new SqlDataAdapter(cmd);
                      Da.Fill(ds);//把查询的数据存在ds
                      //var i = 0;
                      //foreach (var item in ds.Tables[0].Rows)
                      //{
                      //    Console.WriteLine(i++);
                      //}
                      trans.Commit();//事物提交
                      conn.Close();//关闭数据库连接
                  }
                  List<Plan> list = new List<Plan>();
                  foreach (DataRow item in ds.Tables[0].Rows)
                  {
                      Plan plan = new Plan();
                      Type planAttr = typeof(Plan); //获取当前类属性
                      System.Reflection.PropertyInfo[] planAttrs = planAttr.GetProperties();//获取当前这个类的所有属性
                      foreach (PropertyInfo attr in planAttrs)
                      {
                          if (ds.Tables[0].Columns.Contains(attr.Name))
                              attr.SetValue(plan, item[attr.Name].ToString(), null);//给当前plan对象赋值该字段
                          if (attr.Name == "planDetails"&& ds.Tables[1].Rows.Count>0)//如果子类里边有数据的时候才进去
                          {
                              foreach (DataRow Pitem in ds.Tables[1].Rows)
                              {
                                  PlanDetails planD = new PlanDetails();
                                  Type planDAttr = typeof(PlanDetails);
                                  System.Reflection.PropertyInfo[] planDAttrs = planDAttr.GetProperties();
                                  foreach (var attrD in planDAttrs)
                                  {
                                      if (ds.Tables[1].Columns.Contains(attrD.Name))
                                          attrD.SetValue(planD, Pitem[attrD.Name].ToString(), null);
                                  }
                                  plan.planDetails.Add(planD);
                              }
                              
                          }
                      }
                      list.Add(plan);
                  }
                  foreach (var item in list)
                  {
                      Console.WriteLine(item.ISPID);
                  }
    • 测试类
      public class Plan
          {
              public Plan()
              {
                  planDetails = new List<PlanDetails>();
              }
              public string ISPCode { get; set; }
      
              public string ISPStatus { get; set; }
      
              public string ISPID { get; set; }
              
              public List<PlanDetails> planDetails { get; set; }
          }
          public class PlanDetails
          {
              public string ISPDID { get; set; }
      
              public string ISPID { get; set; }
      
              public string SKUNo { get; set; }
          }
    。net工程师
  • 相关阅读:
    Scrum与看板区别
    Android中的Apk的加固(加壳)原理解析和实现
    规模化敏捷开发的10个最佳实践
    TDD、BDD、ATDD、DDD 软件开发模式
    如何解决秒杀的性能问题和超卖的讨论
    mongo数据库的各种查询语句示例
    linux if -d -e -f表达的意思
    prometeus, grafana部署以及监控mysql
    2019年目标
    nginx 动态添加ssl模块
  • 原文地址:https://www.cnblogs.com/yuners/p/14113206.html
Copyright © 2011-2022 走看看