/// <summary> /// Hàm tính toán công thức /// </summary> /// <param name="formula">Chuổi công thức - Vd: "basicsalary * workdaycount"</param> /// <param name="listElementFormula"> /// Danh sách đối tượng phần tử /// Vd: List<ElementFormula> listElementFormula = new List<ElementFormula>(); /// lstElementFormula.Add(new ElementFormula("workdaycount", 82, 1)); /// lstElementFormula.Add(new ElementFormula("basicsalary", 5200000, 2)); /// <returns></returns> //public static object ParseFormula(string formula, List<ElementFormula> listElementFormula) //{ // object result = 0; // listElementFormula = listElementFormula.OrderBy(v => v.OrderNumber).ToList(); // var ce = new CalcEngine.CalcEngine(); // foreach (var item in listElementFormula) // { // if (!ce.Variables.Any(m => m.Key == item.VariableName)) // { // ce.Variables.Add(item.VariableName, item.Value); // } // } // var x = ce.Parse(formula); // result = x.Evaluate(); // if (result.ToString() == "NaN") // { result = 0; } // return result; //} public static FormulaHelperModel ParseFormula(string formula, List <ElementFormula> listElementFormula) { FormulaHelperModel result = new FormulaHelperModel(); try { listElementFormula = listElementFormula.OrderBy(v => v.OrderNumber).ToList(); var ce = new CalcEngine.CalcEngine(); foreach (var item in listElementFormula) { if (formula.Contains(item.VariableName)) { if (!ce.Variables.Any(m => m.Key.ToUpper() == item.VariableName.ToUpper())) { try { ce.Variables.Add(item.VariableName, item.Value); } catch { } } } //////if (!ce.Variables.Any(m => m.Key.ToUpper() == item.VariableName.ToUpper())) //////{ ////// //try ////// //{ ////// ce.Variables.Add(item.VariableName, item.Value); ////// //} ////// //catch ////// //{ ////// // string ttt = item.VariableName; ////// //} //////} } var x = ce.Parse(formula); object value = x.Evaluate(); if (value.ToString() == "NaN") { value = 0; } result.Value = value; return(result); } catch (Exception ex) { result.Value = 0; result.ErrorMessage = ex.Message; return(result); } }
/// <summary> /// Hàm tính toán công thức /// </summary> /// <param name="formula">Chuổi công thức - Vd: "basicsalary * workdaycount"</param> /// <param name="listElementFormula"> /// Danh sách đối tượng phần tử /// Vd: List<ElementFormula> listElementFormula = new List<ElementFormula>(); /// lstElementFormula.Add(new ElementFormula("workdaycount", 82, 1)); /// lstElementFormula.Add(new ElementFormula("basicsalary", 5200000, 2)); /// <returns></returns> //public static object ParseFormula(string formula, List<ElementFormula> listElementFormula) //{ // object result = 0; // listElementFormula = listElementFormula.OrderBy(v => v.OrderNumber).ToList(); // var ce = new CalcEngine.CalcEngine(); // foreach (var item in listElementFormula) // { // if (!ce.Variables.Any(m => m.Key == item.VariableName)) // { // ce.Variables.Add(item.VariableName, item.Value); // } // } // var x = ce.Parse(formula); // result = x.Evaluate(); // if (result.ToString() == "NaN") // { result = 0; } // return result; //} public static FormulaHelperModel ParseFormula(string formula, List<ElementFormula> listElementFormula) { FormulaHelperModel result = new FormulaHelperModel(); try { listElementFormula = listElementFormula.OrderBy(v => v.OrderNumber).ToList(); var ce = new CalcEngine.CalcEngine(); foreach (var item in listElementFormula) { if(formula.Contains(item.VariableName)) { if (!ce.Variables.Any(m => m.Key.ToUpper() == item.VariableName.ToUpper())) { try { ce.Variables.Add(item.VariableName, item.Value); } catch { } } } //////if (!ce.Variables.Any(m => m.Key.ToUpper() == item.VariableName.ToUpper())) //////{ ////// //try ////// //{ ////// ce.Variables.Add(item.VariableName, item.Value); ////// //} ////// //catch ////// //{ ////// // string ttt = item.VariableName; ////// //} //////} } var x = ce.Parse(formula); object value = x.Evaluate(); if (value.ToString() == "NaN") { value = 0; } result.Value = value; return result; } catch (Exception ex) { result.Value = 0; result.ErrorMessage = ex.Message; return result; } }