根据类名如何获取一个类中字段属性和字段值

foreach (System.Reflection.PropertyInfo p in InvoiceList[i].GetType().GetProperties())
{
object value = p.GetValue(InvoiceList[i], null);
string ColumnsValueString="";
if (value!=null)
{
赋值:ColumnsValueString = value.ToString();
}else{

//赋值
}

详例说明:

#region
for (var m = 0; m < modelList.Count; m++)//循环同一个单号下的所有明细
{
   string posLineNo = string.Empty; //单号行号信息
   DataRow drNewRow = dtNew.NewRow();//创建新行
   unit = modelList[m].规格;
   //循环读取类属性名,并将属性值赋值给dataTable中与其对应的字段名
   foreach (System.Reflection.PropertyInfo p in modelList[m].GetType().GetProperties())
   {
       //判断备注和规格型号
       string columnName = p.Name;

       if (columnName == "PO单号")
       {
           //备注栏中没有,则从规格型号里获取
           if (OperateType == string.Empty)
           {
               //拆分规格中的pos单号信息
               PosNoList = new List<PosNoInfo>();
               SplitToArr(unit, ref PosNoList);
               if (PosNoList.Count > 0)
               {
                   drNewRow[columnName] = PosNoList[0].PosNo;
                   posLineNo = PosNoList[0].PosLineNo;
                   PosNoList = new List<PosNoInfo>();
                   continue;
               }

           }
           //备注中只有一条po单号
           else if (OperateType == "AllSameValue")
           {
               drNewRow[columnName] = PosNoList[0].PosNo;
               posLineNo = PosNoList[0].PosLineNo;
               continue;
           }
           else
           {
               //1.po单号等于明细数 2.po单号大于1且po单号小于明细数 3.po单号大于明细数
               var model = PosNoList.Where(a => a.LineNo == m+1).ToList();
               if (model.Count > 0)
               {
                   drNewRow[columnName] = model.First().PosNo;
                   posLineNo = model.First().PosLineNo;
                   continue;
               }

           }

       }
       if (columnName == "PO单号行号")
       {
           drNewRow[columnName] = posLineNo;
           continue;
       }
       object value = p.GetValue(modelList[m], null);
       if (value != null)
       {
           drNewRow[columnName] = value.ToString();
       }
       else
       {
           drNewRow[columnName] = "";
       }
   }
   dtNew.Rows.Add(drNewRow);//追加行内容
}

#endregion

 

转载于:https://www.cnblogs.com/DreakSeeker/p/8143614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值