var result = 0;
int x = 1;
switch (x)
{
case 1:
result = int.Parse(project.Variables["first"].Value) * int.Parse(project.Variables["second"].Value);
break;
case 2:
result = int.Parse(project.Variables["third"].Value) * int.Parse(project.Variables["fourth"].Value);
break;
}
как то сложновато, у меня таких строк более 50...Как вариант:
C#:var result = 0; int x = 1; switch (x) { case 1: result = int.Parse(project.Variables["first"].Value) * int.Parse(project.Variables["second"].Value); break; case 2: result = int.Parse(project.Variables["third"].Value) * int.Parse(project.Variables["fourth"].Value); break; }
Первым кубиком приведите вашу формулу с "нормальному" виду. То есть с цифрами. После этого выполняете следующий кодесли в переменной temp лежит 1, формула: {-Variable.first-}*{-Variable.second-}
если в переменной temp лежит 2, формула: {-Variable.third-}*{-Variable.fourth-}
и т.д.
как то так.
спасибо!
var formula = project.Variables["arithmeticExpression"].Value;
DataTable dt = new DataTable(); // Создаем объект DataTable
var result = dt.Compute(formula, ""); // Вычисляем арифметическое выражение из переменной formula
return result;
я благодарен что откликнулись, но мало что понял, ведь формулы всегда разные, в зависимости от значения...Первым кубиком приведите вашу формулу с "нормальному" виду. То есть с цифрами. После этого выполняете следующий код
Посмотреть вложение 109686C#:var formula = project.Variables["arithmeticExpression"].Value; DataTable dt = new DataTable(); // Создаем объект DataTable var result = dt.Compute(formula, ""); // Вычисляем арифметическое выражение из переменной formula return result;
int x = Convert.ToInt32(project.Variables["temp"].Value);
switch (x)
{
case 1:
return int.Parse(project.Variables["first"].Value) * int.Parse(project.Variables["second"].Value);
break;
case 2:
return int.Parse(project.Variables["third"].Value) * int.Parse(project.Variables["fourth"].Value);
break;
}
Если у вас 52 переменных Variable. то это очень плохо, я бы сделал список, где хранил бы значения.если в переменной temp лежит 1, формула: {-Variable.first-}*{-Variable.second-}
если в переменной temp лежит 2, формула: {-Variable.third-}*{-Variable.fourth-}
и т.д.
как то так.
спасибо!
i = temp + (temp - 1) - 1
x = lst[i]
y = lst[i + 1]
result = x * y
Пример:
temp = 7;
рассчитаем index для получения Х:
i = 7 + (7-1) - 1 = 12;
Получаем:
x = lst[i]
y = lst[i+1]
result = x * y;
Да вообще без них можнопервые две строки всегда неизменны?
switch (project.Variables["temp"].Value)
{
case "1":
return int.Parse(project.Variables["first"].Value) * int.Parse(project.Variables["second"].Value);
case "2":
return int.Parse(project.Variables["third"].Value) * int.Parse(project.Variables["fourth"].Value);
}
можнонельзяли что попроще придумать типа такого:
if(project.Variables["SUMMA"].Value == "123") project.Variables["skruglitel"].Value = "0";
if(project.Variables["SUMMA"].Value == "125") project.Variables["skruglitel"].Value = "1";
if(project.Variables["SUMMA"].Value == "225") project.Variables["skruglitel"].Value = "2";
но только с умножением?
if(int.Parse(project.Variables["temp"].Value) == 1) return double.Parse(project.Variables["first"].Value.Replace(".",",")) * double.Parse(project.Variables["second"].Value.Replace(".",","));
if(int.Parse(project.Variables["temp"].Value) == 2) return double.Parse(project.Variables["third"].Value.Replace(".",",")) * double.Parse(project.Variables["fourth"].Value.Replace(".",","));
if(int.Parse(project.Variables["temp"].Value) == 3) return double.Parse(project.Variables["fifth"].Value.Replace(".",",")) * double.Parse(project.Variables["sixth"].Value.Replace(".",","));
if(int.Parse(project.Variables["temp"].Value) == 4) return double.Parse(project.Variables["seventh"].Value.Replace(".",",")) * double.Parse(project.Variables["eighth"].Value.Replace(".",","));
if(int.Parse(project.Variables["temp"].Value) == 5) return double.Parse(project.Variables["ndoubleh"].Value.Replace(".",",")) * double.Parse(project.Variables["tenth"].Value.Replace(".",","));
throw new Exception("Не найдена позиция!");