C# 将字符串解析为带“quot”的int;型号x“;for循环中的属性仍为字符串格式
我有一个简单的表单,它接受11个问题的单选按钮选择(1-5)中的一个数字,并将值作为varchar(10)数据发布到数据库中。我打算通过一个简单的for循环将用户发送到一个结果页面,该页面列出了这些分数的总和,但是当我尝试将数据解析为整数格式时,由于解析错误,结果只会是零。下面是我的代码示例:C# 将字符串解析为带“quot”的int;型号x“;for循环中的属性仍为字符串格式,c#,string,model,int,C#,String,Model,Int,我有一个简单的表单,它接受11个问题的单选按钮选择(1-5)中的一个数字,并将值作为varchar(10)数据发布到数据库中。我打算通过一个简单的for循环将用户发送到一个结果页面,该页面列出了这些分数的总和,但是当我尝试将数据解析为整数格式时,由于解析错误,结果只会是零。下面是我的代码示例: // Q1 - Q11 are the questions in my Db, using Model property int sum = 0; int temp = 0;
// Q1 - Q11 are the questions in my Db, using Model property
int sum = 0;
int temp = 0;
String question;
for (int i = 11; i >= 1; i--)
{
question = "Model.Q" + i.ToString();
temp = int.Parse(question);
sum += temp;
}
return sum;
奇怪的是,如果我单独解析它们,比如写:
Int32.TryParse(型号Q5,输出温度)代码>
我能够很好地解析数据。我的控制台显示循环将问题
变量保持为带有引号的Model.Qx“
,最终导致总和为0
。我也尝试过使用Int32.TryParse()代码>,除了处理错误之外,没有任何区别
如果字符串包含与i
变量串联的标点符号,或者我在这里遗漏了其他内容,那么它就不能被解析吗?我希望避免单独解析每个问题,因为它在代码中看起来相当难看
提前感谢。您的问题是,您试图使用同名字符串访问变量。这是行不通的,就像名字不是你一样
如果您的模型具有许多具有类似名称的属性,则可以编写一个函数在它们之间切换:
object GetQ(int number)
{
switch(number)
{
case 1: return Model.Q1;
case 2: return Model.Q2;
// etc...
}
}
或者您可以更改模型,将这些变量存储在数组或列表中,或者任何合适的方式
例如,如果您当前有:
class Model
{
string Q1;
string Q2:
// repeated 11 times
你可以:
class Model
{
string[] Q = new string[11];
}
这使您能够执行Model.Q[x]
返回语句应该在for loop之外如果您发布模型中的Q5定义,我可以建议一种更好的方法来执行它。@apomene我的错,它最初在循环之外,我一定是在写这个问题时意外将它放在那里的。现在修好它@RobinBennett Q5或任何Q在我的模型中都是varchar(10)格式的数字1-5(取决于用户单选按钮选择)。好的,我在我的答案中添加了一个部分-这有帮助吗?