Разбор строки как int со свойством Model.x в цикле for остается в строковом формате - PullRequest
2 голосов
/ 21 марта 2019

У меня есть простая форма, которая принимает число из переключателя выбора (1-5) из 11 вопросов и записывает значения в базу данных как данные varchar (10). Я намереваюсь отправить пользователя на страницу результатов, которая перечисляет сумму этих оценок через простой цикл for, но когда я пытаюсь выполнить синтаксический анализ данных в целочисленный формат, он просто приводит к нулю из-за ошибки синтаксического анализа. Вот пример моего кода:

// 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(Model.Q5, out temp); Я в состоянии разобрать данные просто отлично. Моя консоль показывает, что цикл сохраняет переменную question как "Model.Qx" с кавычками, что в итоге приводит к сумме 0. Я также попытался использовать Int32.TryParse(); для этого, и это не дало никакой разницы, кроме обработки ошибки.

Может ли строка просто не анализироваться, если она содержит пунктуацию в конкатенации с переменной i или я что-то здесь упускаю? Я хочу избежать разбора каждого вопроса в отдельности, так как в коде он выглядит довольно некрасиво.

Заранее спасибо.

1 Ответ

2 голосов
/ 21 марта 2019

Ваша проблема в том, что вы пытаетесь получить доступ к переменной, используя строку с тем же именем.Это не будет работать, так же, как имя gitgecko не вы .

Если ваша модель имеет ряд свойств с похожими именами, вы можете написать функциюдля переключения между ними:

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...