C#递归累计到父行
搞了半天 写了一个算法,希望能帮到需要的朋友
效果如下

水电费用是由 就是部门水费和电费累加的,而部门水费由科室水费累加起来的
表结构
DataTable dt = new DataTable();
dt.Columns.Add("pid");
dt.Columns.Add("fatherid");
dt.Columns.Add("Categories");
dt.Columns.Add("Month");
思路:
用递归算法:累计下级数量,递归累计到上级
public DataTable SumNumber(DataTable dt, string fatherid)
{
//月累计
double m_count = ; //查询是否有下级
DataRow[] rows = dt.Select("fatherid='" + fatherid + "'"); //上级变量,下级汇总数量到上级
DataRow fatherow = null;
if (dt.Select("pid='" + fatherid + "'").Length > )
{
fatherow = dt.Select("pid='" + fatherid + "'")[];
} //循环子行
foreach (DataRow row in rows)
{
m_count = Convert.ToDouble(row["Month"]);
//判断是否还有下下级
DataRow[] childrows = dt.Select("fatherid='" + row["pid"] + "'");
foreach (DataRow item in childrows)
{
SumNumber(dt, item["pid"].ToString());
m_count += Convert.ToDouble(item["Month"]);
}
//累计下下级到本级
row["Month"] = m_count;
//累计本级到上级
if (fatherow != null)
{
fatherow["Month"] = Convert.ToDouble(fatherow["Month"]) + m_count;
}
} return dt;
}
调用
 dt = SumNumber(dt, "0");
C#递归累计到父行的更多相关文章
- 根据科目计算父科目ID,并递归累计求父科目的金额
		
通常情况下,我们会从外部系统或者其他数据源得到以下树形结构的数据,并需要对其进行处理 其中,需要做的处理包括 1.计算每个科目的父科目ID,即PARENT_ID; 2.计算每个科目的ITEM_LEVE ...
 - JavaScript之递归查找所有父节点
		
......data: () => ({ // 数据 dt: [{ id: '1', children: [ { id: '1-1', children: [ { id: '1-1-1', ch ...
 - SQL 递归树 子父节点相互查询
		
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...
 - 转载:SQL 递归树 子父节点相互查询
		
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...
 - sql 递归显示所有父节点
		
1.我先建两个表 一个表示项目及级别 另一个表示项目最后一级中包含内容.两个表的数据如图 CREATE TABLE [dbo].[yq_Project]( ,) primary key, ) NOT ...
 - linux下查看目录下某种文件类型累计的代码行数
		
find 路径 -name '*.py' | xargs wc -l
 - Java根据子节点递归父节点
		
先上数据库结构图和树形图: 项目中的一个需求是获取一个商品所属的二级分类名称. 思路分析,首先,我们是可以拿到当前商品所属的子分类的,比如说我买的是一个iPhone SE,对应的分类名称是 iPhon ...
 - blob及行外数据
		
本文中我们假设innodb_page_size为16k,记录格式为compact. 1 大字段 大字段的类型可以参看这里, Data Type Storage Required TINYBLOB, T ...
 - Java 对象的串行化(Serialization)
		
1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(pe ...
 
随机推荐
- FastJSON使用案例(fastjson-1.1.28.jar)
			
import java.util.List; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; ...
 - spring-integration-kafka
			
1.pom.xml配置 <dependency> <groupId>org.springframework.integration</groupId> <ar ...
 - WebDav的java客户端开发包:sardine
			
最近需要对WebDav服务器进行操作,查找了一下,基于java的开发包主要有这几个: slide Jackrabbit sardine webdavclient4j 其中slide是apache的一个 ...
 - golang(5)使用beego 开发 api server 和前端同学拆分开发,使用swagger
			
1,beego api Swagger 是一个规范和完整的框架,用于生成.描写叙述.调用和可视化 RESTful 风格的 Web 服务.整体目标是使client和文件系统作为服务器以相同的速度来更新. ...
 - 进程枚举之PSAPI函数
			
使用PSAPI (Process StatusAPI)函数 这是一种Windows NT/2000下的方法.核心是使用EnumProcesses函数.它的原型如下: BOOL EnumProcesse ...
 - 将数据库select出来的数据转化为与相应databean相应的字典
			
例如以下图: 从user_logs表格select出来的数据放在一个可变数组NSMutableArray中,如 user_logs,如今要 把数据一条条转化为Userlog databean,User ...
 - perl的内置函数scalar
			
scalar可以求数组的长度,但是,在scalar的说明里面并没有这一项. Forces EXPR to be interpreted in scalar context and returns th ...
 - 了不起的 “filter(NULL IS NOT NULL)”
			
经常会在执行计划中看到很奇怪的"FILTER"操作,然后看对应的执行信息是"filter(NULL IS NOT NULL)". 其实这是优化器非常聪明的“短 ...
 - xml解析原理一些想法
			
xml元素解析 <a> <a> <a> </a> <a> </a> </a> <a> </a> ...
 - springboot获取URL请求参数的多种方式
			
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...