EF(3)-Linq TO ADO.NET

LInq中的group by

group element by key

element 表示查询返回的结果,key表示要分组的元素条件,group返回的结果为IGrouping<Tkey,TElement>的查询结果

范例:



1.包括Linq to DataSet和Linq to Sql

Linq 是查询语法,用于对内存里的对象集合或者数据库表进行查询;
Linq to SQL 是针对SQL Server数据库设计的ORM(对象映射)方案;
Entity Framework是ORM实体框架,同时支持SQL Server;Oracle 等

DataSet可以显示缓存不同数据源中的数据通过DataRowExtensions和DataTableExtensions类中的扩展方法

使用DataSet步骤

(1)、获取DataSet/DataTable数据源(2)将DataTable转化成IEnumerable(3)使用Linq语法编写查询(4)对查询结果处理

转化的扩展方法

public staticEnumerableRowCollection<DataRow> AsEnumerable(this DataTable Source)

从DataTable中获取的元素类型为DataRow,进一步访问数据表记录的具体字段数据,需要使用DataRow

的一个扩展方法Field<T>还有使用扩展方法设置字段的值SetField<>(),还有扩展方法AsDataView,转换成一个只读的

数据视图,下面是Linq to DataSet的示范


public DataSet MakeDS()
       {
           DataSet ds = new DataSet();
           DataTable dt = new DataTable("user");
           ds.Tables.Add(dt);
           string[] name = { "张胜男""框架""订单""呃呃""玩玩" };
           string[] sex = { "男""女""男""女""女" };
           int[] age = { 3244556622 };
           dt.Columns.AddRange(
               new DataColumn[]{
               new DataColumn("Name"Type.GetType("System.String")),
               new DataColumn("Sex"Type.GetType("System.String")),
               new DataColumn("Age"Type.GetType("System.Int32"))}
               );
 
           for (int i = 0i < name.Count(); i++)
           {
               DataRow dr = dt.NewRow();
               dr["Name"= name[i];
               dr["Sex"= sex[i];
               dr["Age"= age[i];
               dt.Rows.Add(dr);
           }
           return ds;
       }
       public void DSUtility()
       {
           DataSet ds = MakeDS();
           DataTable dt = ds.Tables[0];
           var query1 = from p in dt.AsEnumerable()
                        select p;
           foreach (var q in query1)
           {
               Response.Write("姓名:" + q.Field<string>("Name"+ "性别:" + q.Field<string>("Sex"+ "年龄" + q.Field<Int32>("Age"));
           }
 
           var query4 = from p in dt.AsEnumerable()
                        orderby p.Field<string>("Age"descending
                        where p.Field<Int32>("Age"> 22 && p.Field<Int32>("Age"< 58
                        select p;
           //使用扩展方法CopyToDataTable把结果集转到一张表里,此时就可以对表操作
           DataTable newDT = query4.CopyToDataTable<DataRow>();
 
 
 
 
           DataView dv = query4.AsDataView();
           dv.RowFilter = "Age>20";
           dv.Sort = "Age asc";
 
       }

2、Linq  to Sql

提供将一种关系数据库映射到编程语言表示的对象模型,使得开发人员可以同过编程语言直接操作

数据库,数据库访问变得更加快捷高效



改变数据使用SubmitChange


2.ef4.0框架继承自ObjectContext

创建数据集ObjectSet<Customers> os=ne.CreateObjectSet<Customers>();

3.ObjectQuery类,System.Data.Objects

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值