如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总

  

最近搞造价系统时遇到一些需要汇总的指标数据
  

  

类似下面的结构
  

  

指标1000
  指标500 B
  指标C 500
  
  指标A=B + C
  

  

当我们需要对这些数值进行校验时,实现的方法有很多种,数据库里写存储过程去更新每行数据,

  

或者我们在程序中遍历等等,但用起来都挺烦琐的。
  

  

这时候想到了Linq To对象这个技术
  

  

简单说下Linq它是。净框架3.5引入的新技术

  

它允许编写c#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
  

  

主要有几点好处简单和SQL的语法差不多举个例子来说
  

  

这里有两个数组需要你找出A与B都存在的元素
  

  

=int [] {1, 2, 3, 4, 5, 6, 7, 8, 0};B=int [] {2、4、7、8、9}
  

  

一般我们会这么写

  

如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总

  

如果使用Linq的话

  

如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总

  

看起来非常的清爽,而且和SQL的语法类似我们可以快速的掌握。
  

  

至于具体的语法和介绍大家可以自行的查询http://msdn.microsoft.com/zh-cn/library/vstudio/bb397926.aspx
  

  

说回来在我们的项目中如何使用呢?
  

  

例如最开始的例子
  

  

指标1000
  指标500 B
  指标C 500
  
  指标A=B + C
  

  

这里我定义一个实体类

        类CIndex {   字符串CIID;   字符串ParentCIID;   双重成本;   }   之前      

获取所有指标的数据到一个数组中。listIndexs
  

  

注意例子中的指标要按树形顺序排列好,然后我们从最底下的子节点往上更新数据,

  

这样可以避免先更新了父节点后,才发现子节点数据不对的问题。
  

  

对数组从最后面的元素开始遍历

  

如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总

  

这样就能很简单的完成对父子节点的计算。
  

  

项目中我们很多时候都会用到DataTable那么Linq这时候又该怎么处理呢?

  

如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

如何使用LinQ To对象把数组或DataTable中的数据进行向上汇总