通过属性名称c#在循环中获取对象值

时间:2017-04-17 05:36:03

标签: c# sql stored-procedures

大家好, 我在项目中需要的是插入数据库,但数据库中有195列,所以我想在c#端输入带有对象和类逻辑的存储过程参数,以使这项工作更容易。

我很容易得到我为数据库排序创建的类的属性名称,但是我很难填写它们的值。

 public class StokItem
    {
            public int prop1 { get; set; }
            public short prop2 { get; set; }
            public int prop3 { get; set; }
            .....
 }

计划代码

String [] propNamestypeof = typeOf (StokItem) .GetProperties (). Select (p => p.Name) .ToArray ();

StokItem item = new StokItem ();
Item.prop1 = blablabla
Item.prop2 = asddsad;
...
.
.

 For (int i = 0; i <195; i ++) {
     ScCommand.Parameters.AddWithValue ("@" + propNamestypeof [i], XXXXX);
       }

含义XXXX;索引i中属性的值是obgen的值(我之前填充它)

我的意思是我怎么能为一个包含这么多字段的表做这件事item.propNamestypeOf [i]实际上想要这样做,但不接受它吗?

1 个答案:

答案 0 :(得分:1)

下面的代码可能对您有所帮助

StokItem item = new StokItem();
item.prop1 = 123;
item.prop2 = 456;
...

foreach (var prop in item.GetType().GetProperties())
{
    //string propertyName = prop.Name;
    //var propertyValue = prop.GetValue(item);
    ScCommand.Parameters.AddWithValue ("@" + prop.Name, prop.GetValue(item));
}