如何使用LinQ To Object把数组或DataTable中的数据进行向上汇总
最近搞造价系统时遇到一些需要汇总的指标数据
类似下面的结构
指标A 1000
指标B 500
指标C 500
指标A = B+C
当我们需要对这些数值进行校验时,实现的方法有很多种,数据库里写存储过程去更新每行数据,
或者我们在程序中遍历等等,但用起来都挺烦琐的。
这时候想到了 Linq To Object 这个技术
简单说下 Linq 它是.Net Framework 3.5 引入的新技术
它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
主要 有几点好处 简单 和 SQL 的语法差不多举个例子来说
这里有两个数组 需要你找出 A 与 B 都存在的元素
A=int[]{1,2,3,4,5,6,7,8,0}; B=int[]{2,4,7,8,9}
一般我们会这么写
如果使用 Linq的话
看起来非常的清爽,而且和SQL的语法类似 我们可以快速的掌握。
至于具体的语法和介绍 大家可以自行的查询http://msdn.microsoft.com/zh-cn/library/vstudio/bb397926.aspx
说回来 在我们的项目中如何使用呢?
例如最开始的例子
指标A 1000
指标B 500
指标C 500
指标A = B+C
这里我定义一个实体类
class CIndex{ string CIID; string ParentCIID; double Cost; }
获取所有指标的数据到一个数组中。 listIndexs
注意例子中的指标要按树形顺序排列好,然后我们从最底下的子节点往上更新数据,
这样可以避免先更新了父节点后,才发现子节点数据不对的问题。
对数组从最后面的元素开始遍历
这样就能很简单的完成对父子节点的计算。
项目中我们很多时候都会用到 DataTable 那么Linq这时候又该怎么处理呢?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C#操作LINQ to SQL组件进行数据库建模的基本教程
建立实体类 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等.其中最方便的就是LINQ to SQL设计器. 1.使用LINQ to SQL设计器建立实体类
-
Linq to SQL Delete时遇到问题的解决方法
1.1. Code1: using (PubsDataContext pubsContent = new PubsDataContext()) { pubsContent.Log = Console.Out; Author author = pubsContent.Authors.Single(a => a.au_id == "111-11-1111"); pubsContent.Authors.DeleteOnSubmit(author); pu
-
C#中Linq查询基本操作使用实例
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 - let 子句 - 复合from子句 - 在某些情况下,源序列中的每个元素本身可能是序列(集合),也可能包含序列 - 用语访问单个数据库中的内部集合 - 使用多个from字句执行连接 - 可以包含多个可从独立数据源生成补充查询的from字句 复合(顾名思义就是有多from的字句)实例: 复制代码
-
c#中LINQ的基本用法实例
一.什么是LINQ LINQ(读音link)代表语言集成查询(Language Integrated Query),是.NEt框架的扩展,它允许我们用SQL查询数据库的方式来查询数据的集合,使用它,你可以从数据库.程序对象的集合以及XML文档中查询数据 下面一个简单的示例,可以查询数组中小于8的数字并输出. 一般步骤:获取数据源.创建查询.执行查询.需要注意的是,尽管查询在语句中定义,但直到最后的foreach语句请求其结果的时候才会执行 using System; using System.C
-
linq语法基础使用示例
借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.从技术角度而言,LINQ定义了大约40个查询操作符,如from, select, in, where, group by, orderby, - 使用这些操作符可以编写查询语句. 做软件的,总想代码要怎么样才能更好地复用,要怎么样才更利于扩展,要怎么样更能以不变应万变.就如同微软框架所提供的API一样,在一定程度上避免开发者重复造轮子.拿LINQ来说吧,.NET Framework3.5及之后的版本都已经封装进去,供成千上
-
C# Linq读取XML文件的实例
1.示例XML文件:Demo.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><note> <conf> <to>infozero</to> <from>lerroy</from> <heading>测试信息</heading> <body>第一条测试信息<
-
C#使用linq语句查询数组中以特定字符开头元素的方法
本文实例讲述了C#使用linq语句查询数组中以特定字符开头元素的方法.分享给大家供大家参考.具体如下: 下面的代码查询数组中以字母k开头的元素 using System; using System.Collections.Generic; using System.Linq; using System.Text; static void Main(string[] args) { string[] names = {"kaka","kunka","kuma
-
LINQ 标准查询操作符
推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的.pdf版下载地址 http://www.jb51.net/books/24738.html 一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: 复制代码 代码如下: using (NorthwindDataContext db=new NorthwindDataContext()) { //查询
-
C#中的Linq Intersect与Except方法使用实例
实例描述 现有某班学生的两份成绩,两份成绩中存在一些不一致的记录.需借助于编程方法找出这些不一致的记录. 实例代码 using System; using System.Collections.Generic; using System.Linq; namespace IntersectAndExceptExp { class Program { static void Main(string[] args) { List<Student> studentList1 = newList<
-
C#使用linq对数组进行筛选排序的方法
本文实例讲述了C#使用linq对数组进行筛选排序的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace OrderQueryResults { class Program { static void Main(string[] args) { string[] names = {"kaka","kun
随机推荐
- 简单讲解Java的Future编程模式
- java模拟hibernate一级缓存示例分享
- Oracle存储过程之数据库中获取数据实例
- VS2012/VS2013本地发布网站问题集锦(HTTP错误代码)
- CentOS 7 网络配置详解
- javascript判断ie浏览器6/7版本加载不同样式表的实现代码
- javascript showModalDialog传值与FireFox的window.open 父子窗口传值示例第1/2页
- js+cookies实现悬浮购物车的方法
- 有关PHP性能优化的介绍
- PHP5.4内置web服务器
- 用Python从零实现贝叶斯分类器的机器学习的教程
- 详谈JS中数组的迭代方法和归并方法
- Python 分析Nginx访问日志并保存到MySQL数据库实例
- javascript屏蔽右键代码
- 基于hover的用法实例(推荐)
- 三种实现方法实现数据表中遍历寻找子节点
- JavaScript使用replace函数替换字符串的方法
- JavaScript初级教程(第五课续)第1/3页
- 微信开发--自定义菜单查询返码乱码的解决方法
- 利用PHPExcel实现Excel文件的写入和读取