c# - Datatable 从数据库中计算字符串
问题描述
我想要实现的是从数据库中获取公式表达式并在运行时执行它。阅读后我发现以下内容;
// Consider these values are coming from the DB
int voltageln1 = 220;
int voltageln2 = 220;
int voltageln3 = 220;
int currentln1 = 10;
int currentln2 = 10;
int currentln3 = 10;
string formula = $"(({voltageln1}*{currentln1}*{0.85})+({voltageln2}*{currentln2}*{0.85})+({voltageln3}*{currentln3}*{0.85}))";
DataTable dt = new DataTable();
double result = Convert.ToDouble(dt.Compute(formula, ""));
MessageBox.Show("Result:" + result);
当字符串公式预先具有 $ 符号时,上面的代码可以正常工作。
但是我从数据库中收到的内容如下,前面没有 $ 符号。
string thatcamefromtheDB = "(({voltageln1}*{currentln1}*{0.85})+({voltageln2}*{currentln2}*{0.85})+({voltageln3}*{currentln3}*{0.85}))";
有没有办法以某种方式添加该 $ 符号或格式化该文本?
解决方案
您可以简单地尝试 Double.Parse:
double data= ((Double.Parse(voltageln1)*Double.Parse(currentln1)*0.85)+(Double.Parse(voltageln2)*Double.Parse(currentln2)*0.85)+(Double.Parse(voltageln3)*Double.Parse(currentln3)*0.85))";
推荐阅读
- python - I am a beginner in python and trying to solve this problem input=777 output=7+7+7=21>>2+1=3#till single digit; it went into infinite loop
- python-3.x - Python unittest 框架,不幸的是没有内置超时的可能性
- postgresql - 长时间等待 7000 万条记录表上的 SELECT 查询。如何提高性能?
- python - 如何将列表映射为 DataFrame 中的一行
- r - 如何从 R 中的 Bizdays 包中排除 bizdays() 中的某些日期
- c++ - 为什么我的类构造函数被调用两次?
- docker - 无法部署到 docker - 密码学失败并且找不到 Rust 编译器
- python - .txt 文件是否仅在进程终止后创建?Python
- javascript - 为 Map 中的每个键创建数组
- google-sheets - 如何将第三列中的数据标签添加到 Google 表格饼图中?