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 = { 32, 44, 55, 66, 22 }; 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 = 0; i < 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