使用字符串选择数组中的对象值
本文关键字:对象 数组 字符串 选择 | 更新日期: 2023-09-27 17:57:06
目前正在为一个问题而苦苦挣扎。我在一个数组中有 30 个对象。data[],每个对象中有 24 小时。"Hour00"、"Hour01"等。我想遍历这些小时。if(data[i].小时00>什么)但似乎我无法以简单的方式增加它。我尝试使用下面的代码,但它不允许我使用字符串"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*
}
考虑一个示例类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
}
根据您的评论,现在据我所知。假设属性 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);
}