Linq实战 之 DataSet操作详解

Posted dragon.net

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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操作详解的主要内容,如果未能解决你的问题,请参考以下文章

tablib.Dataset()操作exl类型数据之“类方法”研究

Pytorch深度学习实战3-7:详解数据加载DataLoader与模型处理

Linq&Lumda---LINQ to DataSet的DataTable操作

Linq基础知识小记

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

(转)Linq-DataSet