EF(3)-Linq TO ADO.NET

来源:互联网 发布:阿里云ecs默认用户名 编辑:程序博客网 时间:2024/06/14 06:58

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

0 0
原创粉丝点击