[英]how to dynamically generate a formula and solive it by selecting multiple rows using linq
大家好我有一个名为tblCeMaintMatrix.ToArray()的数组,其结果是:
[0]: { xValue = 0, Operator = 43 '+' }
[1]: { xValue = 1, Operator = 43 '+' }
[2]: { xValue = 12, Operator = 45 '-' }
我做了一个foreach循环来解决这个问题但是我遇到了一些错误。 我觉得我混淆了这个逻辑..
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
value = operate((a.Operator).ToString(),a.xValue.Value );
}
decimal value2 = value;
}
private decimal operate(String a, Decimal value)
{
Decimal Value = 0;
if (a == "+")
{
Value = value + value;
}
if (a == "-")
{
Value= value - value;
}
if (a == "*")
{
Value = value * value;
}
if (a == "/")
{
Value = value / value;
}
return Value;
}
我的问题是
a)这是做什么的:
0 + 0 = 0
1 + 1 = 2
12 - 12 = 0
而不是0 + 1 -12。
b)它不保留价值。
我怎么能修改这个来解决问题呢? 谢谢
未经测试的代码,我希望它是正确的..
decimal result = 0;
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
result = operate((a.Operator).ToString(),a.xValue.Value,result);
}
}
private decimal operate(String a, Decimal value, Decimal result)
{
switch (a)
{
case "+": result += value; break;
case "-": result -= value; break;
case "*": result *= value; break;
case "/": result /= value; break;
default: result = value; break;
}
return result;
}
编辑忽略第一个运算符,我认为你需要将你的第一个运算符设置为空,如:
[0]: { xValue = 0, Operator = '' }
[1]: { xValue = 1, Operator = 43 '+' }
[2]: { xValue = 12, Operator = 45 '-' }
并查看修改后的Operate方法。
现在,您只将一个值传递给您的operate
方法,并将其用作两个操作数。 您还需要将代码的运行总计传递给函数:
Decimal total = 0;
foreach (var a in tblCeMaintMatrix.ToArray())
{
{
total = operate((a.Operator).ToString(),total, a.xValue.Value );
}
decimal value2 = value;
}
private decimal operate(String a, Decimal left, Decimal right)
{
Decimal Value = 0;
if (a == "+")
{
Value = left + right;
}
if (a == "-")
{
Value= left - right;
}
if (a == "*")
{
Value = left * right;
}
if (a == "/")
{
Value = left / right;
}
return Value;
}
目前尚不清楚您在原始函数中使用value2
表示的是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.