我有以下枚举列表:
public enum Evaluation : int
{
//Section 1
S1_1_1 = 579,
S1_1_2 = 584,
S1_1_3 = 589,
S1_1_4 = 594,
S1_1_5 = 599,
S1_1_6 = 604,
//Section 2
S1_2_1 = 610,
S1_2_2 = 615,
S1_2_3 = 620,
S1_2_4 = 625,
S1_2_5 = 630,
};
我想迭代每个部分并动态使用这些值
int S1Count = 6;
for (int i = 1; i <= S1Count; i++)
{
VoteCount += string.IsNullOrEmpty(this.GetEvaluationValue(FormID, Evaluation.S1_1_ + i)) ? 0 : 1;
}
我怎样才能实现这一目标?感谢。
抱歉,我的错误。我试图通过使用ID为枚举值从数据库中获取值,我必须计算每个部分的计数,平均值。
答案 0 :(得分:1)
你可以使用Enum.Parse来做我想要的事情,虽然我不推荐它。
要使用enum.Parse,您只需要执行以下操作:
Enum.Parse(typeof(Evaluation), String.Format("S1_1_{0}",i));
这确实指向了你使用一些狡猾的方法。正如我在上面的评论中所说,使用数据结构可以让您更容易区分部分及其内容。您可以使用自定义类或可能只是一个单词列表的字典...
Dictionary<int, List<int>> SectionContents;
并使用它:
foreach(int id in SectionContents[sectionNumber])
{
VoteCount += string.IsNullOrEmpty(this.GetEvaluationValue(FormID, id)) ? 0 : 1;
}
(我不保证foreach中的内容,我只是在演示一个int列表的字典是如何工作的。)
创建词典很简单,不需要枚举。如果这是数据库,可以通过数据库查询轻松生成内容,以获取ID及其所在的部分,然后创建数据结构。
答案 1 :(得分:0)
这样做
public class Program
{
public static void Main()
{
foreach (FieldInfo fInfo in typeof(Evaluation).GetFields(BindingFlags.Public | BindingFlags.Static))
{
Console.WriteLine("Evaluation." + fInfo.Name);
}
Console.ReadLine();
}
}