在循环中迭代属性

时间:2017-12-27 12:22:25

标签: c# json loops properties

我试图循环遍历一行数据一段时间,以便每次访问不同的属性。

数据如下所示:

    [JsonProperty("Afbeelding")]
    public string Afbeelding { get; set; }

    [JsonProperty("Afbeelding_2")]
    public string Afbeelding2 { get; set; }

    [JsonProperty("Afbeelding_3")]
    public string Afbeelding3 { get; set; }

    [JsonProperty("Afbeelding_4")]
    public string Afbeelding4 { get; set; }

    [JsonProperty("Afbeelding_5")]
    public string Afbeelding5 { get; set; }

    [JsonProperty("Afbeelding_6")]
    public string Afbeelding6 { get; set; }

    [JsonProperty("Afbeelding_7")]
    public string Afbeelding7 { get; set; }

我在循环中尝试了以下内容:

var path = CreateFile(profitImageRow.("Afbeelding"+i), profitImageRow.Bestandsnaam+i);

第一个不编译,而第二个只将i添加到“Bestandsnaam”的值

有没有办法让这个工作循环?

1 个答案:

答案 0 :(得分:0)

首先,您的JSON似乎应该被反序列化为Dictionary<string, string>,然后Key将成为您的_X属性,值也会存在。

如果你不能(或不会)改变模型,你可以使用反射的力量。

E.g。

var props = typeof(MyModel).GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(x => x.Name.StartsWith("Afbeelding"));

foreach(var prop in props)
{
  var value = prop.GetValue(modelHere); //now value has the corresponding string.
}

// Or you can do
for(int i =1 ; i < 8; i++){
  var neededProp = props.FirstOrDefault(x => x.Name == $"Afbeelding_{i}"); //now this has the value
}