Linq实战 之 DataSet操作详解 

一:linq to Ado.Net

1. linq为什么要扩展ado.net,原因在于给既有代码增加福利。FCL中在ado.net上扩展了一些方法。

简单一点的说: 就是在DatTable 和 DataRow 上面做了一些扩展。

二:扩展方法一览

1. AsEnumerable

2. Field

三:扩展类一览

DataTableExtensions 扩展

=> public static EnumerableRowCollection<DataRow> AsEnumerable(this DataTable source);

DataRowExtensions 扩展

《1》 Field

《2》 SetField

static DataTable BuildTable()
{
DataTable table = new DataTable();

table.Columns.Add(new DataColumn("Name", typeof(string)));
table.Columns.Add(new DataColumn("Age", typeof(int)));

var rand = new Random();

for (int i = 0; i < 10; i++)
{
var row = table.NewRow();

row.SetField<string>("Name", "jack" + rand.Next(0, 1000));
row.SetField<int>("Age", rand.Next(20, 30));

//row["Name"] = "jack" + rand.Next(0, 1000);
//row["Age"] = rand.Next(20, 30);

table.Rows.Add(row);
}

return table;
}

有了这两个扩展方法,我们就可以成功将linq运用在DataTable上,就好像我们对object【linq to object】
进行查询一样。

《1》 简单的查询

var table = BuildTable();

var query = from n in table.AsEnumerable()
select new
{
Name = n.Field<string>("Name"),
Age = n.Field<int?>("Age")
};

《2》 分组 ,统计每个年龄对应的人数

《3》 join 操作

可以看到,在没有linq之前,我们也是可以操作dataset的,但是代码写起来,就不是那么便利了

Linq实战 之 DataSet操作详解的更多相关文章

  1. Linq实战 之 Linq to Sql及Entity Framework操作详解

    Linq实战 之 Linq to Sql及Entity Framework操作详解 一:linq to db的框架 1. linq to sql 2. linq to ado.net entity f ...

  2. Java工程师 基础+实战 完整路线图(详解版)

    Java工程师 基础+实战 完整路线图(详解版)   Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...

  3. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  4. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  5. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  6. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  7. memcached 命令操作详解

    memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...

  8. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  9. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

随机推荐

  1. 深入浅出 Java Concurrency (13): 锁机制 part 8 读写锁 (ReentrantReadWriteLock) (1)

      从这一节开始介绍锁里面的最后一个工具:读写锁(ReadWriteLock). ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念.前面的章节中一 ...

  2. thinkphp5的程序部署到虚拟主机的配置

    thinkphp5的程序部署到虚拟主机的配置 建议不要,因为这些目录文件会全部保留,那么没办法的时候咋整 1 htdocs 虚拟主机上的   把public/index.php修改 改动后的放到 ht ...

  3. 关于where和having的直观理解

    一,查询区别 where是对前面select的字段没有要求,直接查询库表的 having是对前面的select的字段有要求,字段已经select出来的 可以用having进行处理 select id, ...

  4. Windbg基本命令应用总结

    .cordll -ve -u -l //reload core dlls ------加载下载系统文件符号的URL---------- .sympath SRV*C:\Symbols*http://m ...

  5. leetcode380

    class RandomizedSet { public: /** Initialize your data structure here. */ RandomizedSet() { } /** In ...

  6. avalon 的HTML规范

    由于avalon以绑定属性实现对DOM的选择与操作,页面的美观与调试就变得至关重要.参照boostrap的HTML规范,制定如下 属性排列的规范 class (class, id, name与浏览器的 ...

  7. 十大基于Docker的开发工具

    http://www.infoq.com/cn/news/2014/08/top-10-open-source-docker FlynnFlynn是一个使用Go语言编写的开源PaaS平台,Flynn使 ...

  8. [SoapUI] 通过SoapUI发送POST请求,请求的body是JSON格式的数据

    通过SoapUI发送POST请求,请求的body是JSON格式的数据: data={"currentDate":"2015-06-19","reset ...

  9. Spring Boot☞ 使用freemarker模板引擎渲染web视图

    效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import ...

  10. TF Boys (TensorFlow Boys ) 养成记(五): CIFAR10 Model 和 TensorFlow 的四种交叉熵介绍

    有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...