使用string在数组中选择对象值

时间:2016-07-14 10:23:43

标签: c#

目前正在努力解决问题。 我在一个数组中有30个对象。 data [],每个对象有24小时。 “Hour00”,“Hour01”等。我想迭代这几个小时。 if(data [i] .Hour00> something) 但似乎我不能轻易地增加它。我尝试使用下面的代码,但它不允许我使用字符串“b”来定义我想要提取的小时数。

for(int k = 0; k < 24; k++)
{
    string b = "Hour00";
    if(data[i].b > 20){
        *Something happens*

}

也尝试过:

for(int k = 0; k < 24; k++)
{
    if(data[i].Hour(k) > 20){
        *Something happens*

}

2 个答案:

答案 0 :(得分:1)

考虑一个示例类Item

public class Item
{
    public int Hour0 { get;set;}
    public int Hour1 { get;set;}
    public int Hour2 { get;set;}
}

使用反射,您可以迭代HourXX道具:

var item = new Item { Hour0 = 10, Hour1 = 15, Hour2 = 20 };

for (int i = 0; i <= 2; i++)
{
    var hourPropValue = typeof(Item).GetProperty("Hour" + i).GetValue(item);
    // Conditional code here
}

答案 1 :(得分:0)

根据您的评论,据我所知。假设属性Hour00..Hour23持有整数值:

int day = DateTime.Today.Day;
for (int i=0; i<24; i++){
  int value = data[day].GetType().GetProperty(string.Format("Hour{0:00}",i)).GetValue(data[day], null);
}