有关表达式解析的问题(asp.net,c#)

hululuya 2010-10-27 09:46:21
最近在做一个管理系统,需要动态添加管理指标。但指标之间需要做一些加减乘除的简单计算,但是指标是变动的,公式也是变动的,计划把公式存在数据库里,计算的时候调用公式,但是这个表达式如何解析呢?
而且解析之后还要从数据库中获取对应的值进行计算。

ID Name FatherID 数量 计算公式
1 蛋 0 1=2+3 (根据这个算出蛋的数量)
2 鸡蛋 1 5
3 鸭蛋 1 6

本人不是专门学编程的,这个东西又要的比较急,想了好些天了还是搞不定,如有高手能帮忙解决,不胜感激啊!
问题解决立即散分。
...全文
184 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hululuya 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hookyzlr 的回复:]
个人看法:
给用户一个组合计算公式的页面,页面中展现出你的DataTable,让用户选择列和加减乘除符合组合出一个计算公式。用户点击哪一列,你就把相应的列号记录下拉,组合成计算公式,存在数据库中,以后读取出该计算公式。用DataTable.Compute()计算。
[/Quote]
能不能给点代码?我研究了一通,还是没能实现得了。
mayanly 2010-11-01
  • 打赏
  • 举报
回复
等待高人!
兔子-顾问 2010-11-01
  • 打赏
  • 举报
回复
你要的是表达式计算?
double result = Convert.ToDouble(new DataTable().Compute("1+2"));
还是需要计算列?
wuhuabucai 2010-11-01
  • 打赏
  • 举报
回复
计算蛋总和
dt.Compute("sum(数量)","FatherID = 1 ");
wuhuabucai 2010-11-01
  • 打赏
  • 举报
回复
用datatable.compute可以合计
何需要再计算呢
dt.Compute("sum((a+b)/c)","id = 1 and id = 2 ");

能否?
hululuya 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abcjun188 的回复:]
写清楚点逻辑可以试一试写给你
[/Quote]

数据表是这样的:
ID Name FatherID 数量 计算公式
1 蛋 0 1=2+3 (根据这个算出蛋的数量)
2 鸡蛋 1 5
3 鸭蛋 1 6
计算公式是不确定的,如果添加指标(4 鹅蛋 1 9),则更新公式为1=2+3+4,(计算公式可能是动态变化的)根据这个公式求得蛋数量=5+6+9。
由于公式是存在数据库中,所以要先判断该指标是否需要计算,然后解析公式。找到各个ID对应的值,并让它们按公式来进行运算。再把结果存起来。
公式都是比较简单的加减乘除,最复杂的就是(a+b)/c 这种的。
不知道这么说够清楚不。
hookyzlr 2010-11-01
  • 打赏
  • 举报
回复
个人看法:
给用户一个组合计算公式的页面,页面中展现出你的DataTable,让用户选择列和加减乘除符合组合出一个计算公式。用户点击哪一列,你就把相应的列号记录下拉,组合成计算公式,存在数据库中,以后读取出该计算公式。用DataTable.Compute()计算。
hululuya 2010-11-01
  • 打赏
  • 举报
回复
要求是系统的指标体系可以是动态的,比如有一个指标现在不用了,那就可以在指标体系管理页面更改这个指标体系,把这个指标从指标体系删除,如果用到新的指标也可以增加。
各项指标值之间的计算公式是存在数据库中,计算的时候调用公式,查找相应的值,然后按公式计算。
这样不用更改其他部分的代码,也就是说客户以后要改变指标体系自己修改就可以了。
paual779 2010-11-01
  • 打赏
  • 举报
回复
只要你能并接出运算表达式: (1+2)*5,就可以用
new DataTable().Compute("(1+2)*5", "").ToString(); 、
去计算。
hululuya 2010-11-01
  • 打赏
  • 举报
回复
我去研究一下大家说的DataTable().Compute
打一壶酱油 2010-10-28
  • 打赏
  • 举报
回复
写清楚点逻辑可以试一试写给你
hululuya 2010-10-28
  • 打赏
  • 举报
回复
求高手指导。

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧