Linq实战 之 DataSet操作详解
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操作详解的更多相关文章
- 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 ...
- Java工程师 基础+实战 完整路线图(详解版)
Java工程师 基础+实战 完整路线图(详解版) Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- memcached 命令操作详解
memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...
- windows phone 8.1开发SQlite数据库操作详解
原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
随机推荐
- 魔术方法以及__call的调用
一.什么是魔术方法? 魔术方法是php中对一类方法的统称,这些方法可以在任何类中被实现.他们通常可以完成一些特殊的无法纯粹依靠自己编程实现的功能.他们通常以双下划线"__"作为名称 ...
- python+selenium+Firefox+pycharm版本匹配
window(2018-05-29)最新 python:3.6.1 地址https://www.python.org/downloads/release/python-361/ selenium ...
- CentOS7.6安装稳定版Nginx
官网地址:http://nginx.org/en/linux_packages.html#RHEL-CentOS 需先安装依赖:sudo yum install -y yum-utils 安装开始: ...
- 指向“**js/shop.js”的 <script> 加载失败
指向“”的 <script> 加载失败 找了半天没找到原因 原来是meta里面的 csp Content-Security-Policy <meta http-equiv=" ...
- leetcode830
public class Solution { public IList<IList<int>> LargeGroupPositions(string S) { //" ...
- django -- 自定义simpletag 和 filter
django中自定义simpletag,即使用自己定义的函数在html中处理数据. 步骤: 1.创建并注册app settings.py INSTALLED_APPS = [ 'django.cont ...
- UNIX网络编程——客户/服务器心搏函数 (转)
下面是关于回送客户和服务器程序开发一些简单的心搏函数.这些函数可以发现对端主机或到对端的通信路径的过早失效. 在给出这些函数之前我们必须提出一些警告.首先,有人会想到使用TCP的保持存 ...
- 运维自动化工具 Kickstart
简介: 批量安装操作系统工具之 Kickstart ,RedHat 早前推出的产品( 不多说了,现在都玩 Cobbler 啦 ). 测试环境:CentOS 6.6 x86_64 minimal 一.安 ...
- 动态修改datagrid中的numberbox的最大值和最小值
注意datagrid使用的触发函数是: onBeginEdit,只有在这个触发条件下,editor才真正初始化完成,不然没法动态修改numberbox中的最大最小值. 示例代码:(注意这一块:onBe ...
- js中格式化时间
//时间格式化 Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, &quo ...