假设我有3个整数都声明为
int Y = 0;
int N = 0;
int U = 0;
从那里我从存储过程中获取2个值(一个字符串和一个整数)。
该字符串返回Y,N,U
整数返回参加人数。
string test = dr["ATTEND_CDE"].ToString();
int test2 = int.Parse(dr["COUNT"].ToString());
是否有更好的方法将相应的整数分配给除以下内容之外的计数:
if (test == "Y")
{
Y = test2;
}
else if (test == "N")
{
N = test2;
}
else if (test == "U")
{
U = test2;
}
答案 0 :(得分:8)
您真正拥有的是string
(“Y”,“N”或“U”)与int
之间的映射。
这是Dictionary
的完美用例(下面是C#6语法):
Dictionary<string, int> myValues = new Dictionary<string, int>()
{
["Y"] = 0,
["N"] = 0,
["U"] = 0
};
//usage
myValues[stringFromDatabase] = valueFromDatabase;
请注意,如果数据库中的值是垃圾,这将抛出(这可能是你想要的)。
答案 1 :(得分:2)
您可以在字符串上使用switch语句。所以对于上面的例子,
switch(test)
{
case "Y": Y = test2; break;
case "N": N = test2; break;
case "U": U = test2; break;
}
答案 2 :(得分:1)
如果您将Y
,N
,U
存储为课程中的属性,那么您可以使用
自动JSON反序列化(Deserializing JSON to .NET object using Newtonsoft (or LINQ to JSON maybe?))
自动XML反序列化(http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm)
如果您使用c#6.0,那么您至少可以执行类似
的操作if(test.equals(nameof(y)))
{
//...
}