namespace DataTableCompute
{
class Test
{
static void Main(string[] args)
{
bool boolResult;
decimal numResult;
try
{
boolResult = Convert.ToBoolean(new DataTable().Compute("2 = 3 and '纬纱' = '纬纱' and '非库存纱' <> '库存纱' and 0.6 >= 0.5", ""));
numResult = Convert.ToDecimal(new DataTable().Compute("(1 + 2) / 5", ""));
}
catch
{
throw new Exception("计算错误!");
}
Console.WriteLine(boolResult); //False
Console.WriteLine(numResult); //0.6
Console.ReadKey();
}
}
}
该方法有两个参数:
// 摘要:
// 计算用来传递筛选条件的当前行上的给定表达式。
//
// 参数:
// expression:
// 要计算的表达式。
//
// filter:
// 要限制在表达式中进行计算的行的筛选器。
//
// 返回结果:
// System.Object,设置为计算结果。
public object Compute(string expression, string filter);
其中expression的语法与Sql类似,借助该方法,可以对字符串型的表达式进行计算。
参考资料:
https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datacolumn.expression?view=netframework-4.7.2
http://www.cnblogs.com/fanyf/archive/2012/05/11/2495919.html