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