簡體   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