static void Main(string[] argsx)
{
Expression e = new Expression("if (And(NOT(ISBLANK(ReceivedDate)), ReceivedDate >= Date(2017,01,01), ReceivedDate <= Date(2018,12,31)), Total * 0.1, Total * VAT)");
e.Parameters["ReceivedDate"] = DateTime.Parse("2018/01/01");
e.Parameters["VAT"] = (decimal)12 / 100;
e.Parameters["Total"] = 1000;
e.EvaluateFunction += delegate (string name, FunctionArgs args)
{
var operatorName = name.ToUpper();
if (operatorName == "DATE")
{
args.Result = new DateTime((int)args.Parameters[0].Evaluate(), (int)args.Parameters[1].Evaluate(), (int)args.Parameters[2].Evaluate());
}
if (operatorName == "AND")
{
args.Result = args.Parameters.All(x => (bool)x.Evaluate());
}
if (operatorName == "ISBLANK")
{
var temp = args.Parameters[0].Evaluate();
args.Result = temp == null || string.IsNullOrWhiteSpace(temp.ToString());
}
if (operatorName == "NOT")
{
args.Result = !(bool)args.Parameters[0].Evaluate();
}
};
var rs = e.Evaluate();
}
Thứ Hai, 2 tháng 10, 2017
NCalc Custom Functions
Đăng ký:
Đăng Nhận xét
(
Atom
)
Không có nhận xét nào :
Đăng nhận xét