繁体   English   中英

如何动态生成公式并通过使用linq选择多行来解决它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM