文档库 最新最全的文档下载
当前位置:文档库 › .NET4.0 LINQ查询数据

.NET4.0 LINQ查询数据

.NET4.0  LINQ查询数据
.NET4.0  LINQ查询数据

https://www.wendangku.net/doc/eb17125128.html,4.0 LINQ查询数据

使用LINQ能够对数据集进行查询。在https://www.wendangku.net/doc/eb17125128.html,中,可以创建一个新的LINQ 数据库进行数据集查询。右击现有项目,在弹出的快捷菜单中选择【添加新项】选项。在弹出的【添加新项】对话框中选择【LINQ to SQL 类】选项,如图9-14所示。

图9-14 新建【LINQ to SQL 类】

创建一个LINQ to SQL类,能够映射一个数据库,实现数据对象的创建,如图9-15所示。创建一个LINQ to SQL类后,可以直接在服务资源管理器中拖动相应的表到LINQ to SQL类文件中,如图9-16所示。

图9-15 服务器资源管理器图9-16 表BookInfo 创建一个LINQ to SQL 类文件后,LINQ to SQL类就将数据进行对象化,这里的对象化就是以面向对象的思想针对一个数据集建立一个相应的类。开发人员能够使用LINQ to SQL创建的类进行数据库查询和整合操作,示例代码如下所示。

C#读取_SQL_Server_数据库表的例子

C#读取 SQL Server 数据库表的例子 using System; using System.Data; using System.Data.SqlClient; using System.Collections.Generic; using System.Linq; using System.Text; namespace A0160_SQL_Server.Sample { ///

/// 用于读取 SQL Server 数据库的例子. /// /// 注意:这个例子所使用的表和数据,请参考项目下的 Schema.sql 文件。 /// /// class ReadSqlServerData { /// /// SQL Server 的数据库连接字符串. /// private const String connString = @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Sample;Integrated Security=True"; /// /// 用于查询的 SQL 语句. /// private const String SQL = @" SELECT TOP 3 ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO, SALE_DATE, SUM(SALE_MONEY) AS SUM_MONEY FROM SALE_REPORT GROUP BY SALE_DATE

微软LINQ中文教程

。LINQ中文教程 LINQ初体验之LINQ to Object (1) 一步一步学Linq to sql(一):预备知识 (4) 一步一步学Linq to sql(二):DataContext与实体 (9) 一步一步学Linq to sql(三):增删改 (15) 一步一步学Linq to sql(四):查询句法 (21) 一步一步学Linq to sql(五):存储过程 (35) 一步一步学Linq to sql(六):探究特性 (46) 一步一步学Linq to sql(七):并发与事务 (53) 一步一步学Linq to sql(八):继承与关系 (60) 一步一步学Linq to sql(九):其它补充 (69) 一步一步学Linq to sql(十):分层构架的例子 (73) Linq To Xml学习 (80) Linq To Xml学习-1. 概述 (80) Linq To Xml学习-2 编程概述 (82) C# 2008 学习笔记- LINQ to XML (87) 一、命名空间 (87) 二、编程方式创建XML文档 (88) 三、使用LINQ 查询创建XML文档 (89) 四、加载和解析XML内容 (90) 六、遍历内存中的XML文档 (90) 七、修改XML文档 (92) 使用linq to xml 快速创建自己的Rss (93) LINQ初体验之LINQ to Object VS2008的发布,最激动人心的不过是LINQ的诞生。

Wh at‘s LINQ? Language Integrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够将数据查询语句集成到编程语言中。目前,LINQ 支持的语言有C# 和VB。 为啥会有LINQ,主要还是因为现在的数据格式越来越多,数据库、XML、数组、哈希表……每一种都有自己操作数据的方式,学起来费事费力。于是,就有了LINQ诞生的理由——以一种统一的方式操作各种数据源,减少数据访问的复杂性。 LINQ带来很多开发上的便利。首先,他可以利用Visual Studio这个强大的IDE(这话决不是吹,Visual Studio绝对是最好用的开发工具之一),至少用Visual Studio来写SQL语句,可以有智能感知了,比起从前用查询分析器写存储过程的感觉好多了!其次,它可以把数据当成一个对象来操作,即Data == Object? 的问题。 LINQ目前可以对XML, Object, SQL做数据访问,今后还会有LINQ to Entity 的功能。 说来惭愧,我也是刚刚才接触LINQ,先从最简单的开始吧,做一个LINQ to Object的例子,实现一个对数组的操作。这个例子套用了今年TechED中海洋兄讲的例子,在此声明。 在这个例子中,我会先通过GetMethods的方法,拿到string的所有方法,接下来,就看LINQ的厉害了,这里是选出所有非静态的方法签名。 MethodInfo[] methods = typeof(string).GetMethods(); var result = from m in methods where m.IsStatic != true select https://www.wendangku.net/doc/eb17125128.html,; foreach (var r in result) { Console.WriteLine(r.ToString()); } Console.ReadLine(); 例子虽然简单,确能从中看出LINQ的一些端倪。首先,var是什么东东? 看起来,有点像javascript里面的弱类型的变量声明。但是,C#是强类型的,尽管你用var来声明,编译器还是可以根据上下文推倒出它当前的类型。比如这个例子里面,result就是IEnumerable 类型的。在这里面,写IEnumerable和写var是一样效果的,显然,var会简单得多。你不用考虑数据操作的返回值是什么类型,还能享受强类型声明带来的方便实惠……

第8章--使用LINQ进行数据访问教程文件

第8章--使用L I N Q 进行数据访问

第8章使用LINQ进行数据访问 一、选择题 1.LINQ查询表达式中必须包含()子句。 A.from B.where C.orderby D.groupby 2.在LINQ查询表达式中,()子句用于指定筛选元素的逻辑条件。 A.from B.where C.orderby D.select 3.LINQ查询表达式必须以()子句结束。 A.where B.orderby C.groupby D.select或group 4.orderby子句降序排序时使用()关键字。 A.ascending B.descending C.ASC D.DESC 5.使用LINQ操作SQL Server时,调用()方法将最终操作结果更新到数据库中。A.InsertOnSubmit B.DeleteOnSubmit C.DeleteAllOnSubmit D.SubmitChanges 6.LINQ查询表达式中使用()子句对查询结果进行分组。 A.from B.where C.orderby D.groupby 7.使用一个Lambda表达式从字符串数组s中查找包括“C#”的元素,则正确的语句是()。A.Array.Find(strLists, s => (s.IndexOf("C#") >= 0)) B.Array.FindAll(strLists, s => (s.IndexOf("C#") >= 0)) C.Array.Find (strLists, s => (https://www.wendangku.net/doc/eb17125128.html,stIndexOf("C#") <= 0)) D.Array.FindAll(strLists, s => (https://www.wendangku.net/doc/eb17125128.html,stIndexOf("C#")<= 0)) 8.LINQ查询表达式中使用()子句可以设置两个数据源之间的关联关系。 A.from B.groupby C.into D.join 9.下面代码实现的是()操作。 var innerJoinQuery = from main in tb_sell_main join detailed in tb_sell_detailed on main.billcode equals detailed.billcode select new { 商品编号= detailed.tradecode, 商品全称= detailed.fullname,

linq查询数据库实例

实例28、创建LINQ TO sql的步骤: 1)建立windows 窗体应用项目文件 2)选择'项目\添加新项'菜单,在类别中选择'常用项',在'模板'视图中选择'LINQ to sql '类,系统自动添加用户命名的LINQ to SQL 文件(dataclasses1.dbml) 3)选择'视图\服务器资源管理器'菜单,拖动数据链接的表或者视图节点到LINQ to SQL 的对象关系设计器设计视图的左边的一个窗格,系统将自动添加数据表。4)选择'生成\生成myform'菜单,然后选择'数据\显示数据源'菜单,弹出'数据源'窗口,单击'添加新数据源'超级链接,弹出'数据源配置向导'对话框。 5)在'数据源配置向导(选择数据源类型)'对话框的'应用程序从哪里获取数据?'列表视图中选择'对象',再单击'下一步',弹出'数据源配置向导(选择希望绑定到的对象)'对话框,在对话框的'对象位于哪个程序集中?(如果没有出现,请取消该向导,然后重现生成包含对象的项目)'的树视图中选择数据表节点(比如gsyproduct表),再单击'下一步',弹出'数据源配置向导(添加对象数据源)'对话框,在对话框中单击'完成'按钮,则会在'数据源'窗口中显示数选择的数据表(比如gsyproduct )的字段信息。 6)在'数据源'窗口中拖动'gsyproduct'节点到应用程序窗体'Form1.vb(设计)'视图,系统将自动添加相关的数据控件gsyproductbindingsource、gsyproductbindingnavigator、gsyproductdatagridview等。 7)使用鼠标双击'应用程序窗体Form1.vb(设计)'视图,系统将自动添加代码框架,在load事件处理代码框架中添加如下实现代码: public class form1 private MyDataContext as New Dataclasses1DataContext() '设置控件数据源 private sub Form1_load(ByVal sender as System.Object, ByVal e as System.EventArgs ) Handles MyBase.Load Me.gsyproductbindingsource.DataSource=MyDataContext.gsyproduct End Sub End Class

LINQ查询

Ch38 LINQ查询 了解了基本的LINQ基本概念,就能够使用LINQ进行应用程序开发。开发人员能够使用LINQ对不同的对象,包括数据库、数据集和XML文档进行查询。 一、LINQ查询概述 LINQ可以对多种数据源和对象进行查询,如数据库、数据集、XML文档甚至是数组,这在传统的查询语句中是很难实现的。如果有一个集合类型的值需要进行查询,则必须使用Where等方法进行遍历,而使用LINQ可以仿真SQL语句的形式进行查询,极大的降低了难度。 (一)准备数据源 既然LINQ可以查询多种数据源和对象,这些对象可能是数组,可能是数据集,也可能是数据库,那么在使用LINQ进行数据查询时首先需要准备数据源。 1.数组 数组中的数据可以被LINQ查询语句查询,这样就省去了复杂的数组遍历。数组数据源示例代码如下所示。 string[] str = { "学习", "学习LINQ", "好好学习", "生活很美好" }; int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 数组可以看成是一个集合,虽然数组没有集合的一些特性,但是从另一个角度上来说可以看成是一个集合。在传统的开发过程中,如果要筛选其中包含“学习”字段的某个字符串,则需要遍历整个数组。 2.SQL Server 在数据库操作中,同样可以使用LINQ进行数据库查询。LINQ以其优雅的语法和面向对象的思想能够方便的进行数据库操作,为了使用LINQ进行SQL Server数据库查询,可以创建两个表,这两个表的结构如下所示。Student(学生表): S_ID:学生ID、S_NAME:学生姓名、S_CLASS:学生班级、C_ID:所在班级的ID。 为了更加详细的描述一个学生所有的基本信息,就需要创建另一个表对该学生所在的班级进行描述,班级表结构如下所示。Class(班级表): C_ID:班级ID、C_GREAD:班级所在的年级、C_INFOR:班级专业。 (二)使用LINQ 在传统对象查询中,往往需要很多的if、else语句进行数组或对象的遍历,例如在数组中寻找相应的字段,实现起来往往比较复杂,而使用LINQ就简化了对象的查询。由于前面已经准备好了数据源,那么就能够分别使用LINQ语句进行数据源查询。 1.数组 在前面的章节中,已经创建了一个数组作为数据源,数组示例代码如下所示。 int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 上述代码是一个数组数据源,如果开发人员需要从其中的元素中搜索大于5的数字,传统的方法应该遍历整个数组并判断该数字是否大于5,如果大于5则输出,否则不输出,示例代码如下所示。 namespace _21_1 { class Program { 1

Linq学习文档

Linq中关键字的作用及用法 1.All确定序列中的所有元素是否都满足条件。如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为true;否则为false。 Demo: 此示例使用All 确定数组是否仅包含奇数。 public void Linq70() { //创建一个数组 int[] numbers = { 1, 11, 3, 19, 41, 65, 19 }; //调用All方法 bool onlyOdd = numbers.All(n => n % 2 == 1); //输出结果 Console.WriteLine("这个数组仅包含奇数: {0}", onlyOdd); } 输出结果:这个数组仅包含奇数:true 2.Any确定序列是否符合某条件元素,如果源序列中有任一元素符合条件,则为true;否则为false。 Demo: 此示例使用 Any 确定数组中是否有任何单词包含子字符串“ei”。 public void Linq67() { //创建数组 string[] words = { "believe", "relief", "receipt", "field" }; //调用Any方法 bool iAfterE = words.Any(w => w.Contains("ei")); //输出结果 Console.WriteLine("数组中有一个元素包含“ei”: {0}", iAfterE); } 输出结果:数组中有一个元素包含“ei”: true 3.where子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素。它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。一个查询表达式可以包含多个where子句,一个子句可以包含多个谓词子表达式。 Demo1: 在下面的示例中,where子句筛选出除小于五的数字外的所有数字。如果移除where子句,则会返回数据源中的所有数字。 public void Linq1() { //定义一个简单的、支持Ienumerable的数据源,这里是一个数组 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; //定义查询语句,where用于where子句 var lowNums =

第8章使用LINQ进行数据访问

第8章使用LINQ进行数据访问 一、选择题 1.LINQ查询表达式中必须包含()子句。 A.from B.where C.orderby D.groupby 2.在LINQ查询表达式中,()子句用于指定筛选元素的逻辑条件。 A.from B.where C.orderby D.select 3.LINQ查询表达式必须以()子句结束。 A.where B.orderby C.groupby D.select或group 4.orderby子句降序排序时使用()关键字。 A.ascending B.descending C.ASC D.DESC 5.使用LINQ操作SQL Server时,调用()方法将最终操作结果更新到数据库中。A.InsertOnSubmit B.DeleteOnSubmit C.DeleteAllOnSubmit D.SubmitChanges 6.LINQ查询表达式中使用()子句对查询结果进行分组。 A.from B.where C.orderby D.groupby 7.使用一个Lambda表达式从字符串数组s中查找包括“C#”的元素,则正确的语句是()。A.Array.Find(strLists, s => (s.IndexOf("C#") >= 0)) B.Array.FindAll(strLists, s => (s.IndexOf("C#") >= 0)) C.Array.Find (strLists, s => (https://www.wendangku.net/doc/eb17125128.html,stIndexOf("C#") <= 0)) D.Array.FindAll(strLists, s => (https://www.wendangku.net/doc/eb17125128.html,stIndexOf("C#")<= 0)) 8.LINQ查询表达式中使用()子句可以设置两个数据源之间的关联关系。 A.from B.groupby C.into D.join 9.下面代码实现的是()操作。 var innerJoinQuery = from main in tb_sell_main join detailed in tb_sell_detailed on main.billcode equals detailed.billcode select new { 商品编号= detailed.tradecode, 商品全称= detailed.fullname, 1

LinQ查询语言

语言集成查询(LINQ)

课程大纲 ?什么是LINQ? ?查询基本操作(查询关键字) – from子句 – where子句 – select子句 – group子句 – into子句 – orderby子句 – join子句 2

什么是LINQ? ?传统的查询 Select FirstName,LastName from Customers Where city=‘Shanghai’ Order by district 1、简单的字符串。 2、没有编译时候的类型检查。 3、没有IDE编译环境的只能感知。以上的例子只是针对SQL SERVER, 针对不同的数据源,例如XML 文档、各种Web 服 务等我们还要学习不同的 查询方法……… 3

什么是LINQ? ?LINQ是语言集成查询(Language Integrated Query)的简称,是Visual Studio 2008 和.NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁 ? 支持各种数据源 4

什么是LINQ? ?所有LINQ 查询操作都由以下三个不同的操作组成 – 获取数据源 – 创建查询 – 执行查询 5

数据源 ?数据源 –在上一个示例中,由于数据源是数组,因此它 隐式支持泛型IEnumerable(T)接口。这一事实 意味着该数据源可以用LINQ 进行查询。 –在foreach 语句中执行查询,而foreach 要求使 用IEnumerable或Ienumerable(T)。支持 Ienumerable(T)或派生接口(如泛型 Iqueryable(T)的类型称为“可查询类型”。 6

如何使用LINQ检索和操作数据库

如何使用LINQ检索和操作数据库 日期:2009年7月10日作者:人气:35 查看:[大字体中字体小字体] 借助于LINQ提供的各种功能和独有的语法结构,LINQ已经被用来作为一种统一的数据库访问技术而被广泛使用,用以消除从数据访问层到数据源层出不穷的区别。通过LINQ检索,我们已经可以不用自己编写一行代码来从数据库获取到数据,LINQ和SQL之间提供了一个直接映射关系,它可以通过我们事先指定的 数据库连接自动生成数据库实体类,而我们只需要通过LINQ语句操作这些实体对象就可以非常轻松地从数据库中获取到数据。当然,LINQ所生成的实体对象 的功能远远不止这些,它甚至支持数据的更新和存储过程的调用,所有这些都可以通过简单的几行LINQ语句来完成,让我们真正摆脱了编写数据访问层、数据库实体类的工作。 下面就让我们来看看LINQ的神奇功能吧! 使用LINQ生成数据库实体类 Visual Studio 2008集成开发环境为我们提供了很多有用的功能来实现LINQ to SQL。为了让读者可以自行尝试本文所举的示例,读者可能需要在本地安装一个SQL Server数据库实例,Northwind是微软官方提供的一个不错的例子,如果你本地没有安装这个实例,可以去下面这个地址下载: https://www.wendangku.net/doc/eb17125128.html,/downloads/details.aspx?FamilyID=06616212-035 6-46A0-8DA2-EEBC53A68034&displaylang=en 我们在Visual Studio 2008中新建一个控制台应用程序,取名为LINQExample,然后打开Server Explorer窗口并连接到Northwind数据库。如果找不到Server Explorer窗口,可以通过View-Server Explorer菜单打开。 在Server Explorer窗口中,右键单击Data Connection节点,选择Add Connection,在弹出的窗口中选择Northwind数据库。

LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引

Where 子句的用法 我们除了可以如下方式书写带Where子句的LINQ外: from p in products where p.UnitsInStock > 0 && p.UnitPrice > 3.00M select p; 还可以对数组(所有实现了IEnumerable接口的对象都可以)的实体使用Where 扩展方法。 把一个查询语句写成多个扩展函数的方式,这其实是编译器处理查询语句的方法,比如下面的查询语句:int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 }; var m = from n in arr where n < 5 orderby n select n; 编译器在编译后,替我们产生的代码等价于如下的代码: IOrderedSequence m = arr.Where(delegate (int n) { return (n < 5); }).OrderBy(delegate (int n) { return n; }); 下面我们来看一个使用Where扩展方法的例子: 我们有一个字符串数组,一次是0到9的英文单词,我们查询出这10个字符的长度比它所在数组的位置这两个数字比较小的英文单词. 这个查询可能有些绕口,你可以先看下面这些代码: public static void LinqDemo01() { string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; var shortDigits = digits.Where((dd, aa) => dd.Length < aa); Console.WriteLine("Short digits:"); foreach (var d in shortDigits) Console.WriteLine("The word {0} is shorter than its value.", d); } 输出结果:

LINQ下使用三层架构的探索(五)逻辑访问层中的带参查询、插入、更新以及删除。

LINQ下使用三层架构的探索(五)逻辑访问层中的带参查询、插入、更新以及删除。 Posted on 2008-04-04 20:58 NafLian阅读(2635) 评论(11)编辑收藏网摘 在上一章中,虽然只添加了一个方法,但是在LINQ下的三层架构已经成型了。这章之中我们将在中间层添加更多的方法,包括带参数的查询,以及插入更新,删除操作。 按部就班的做 一、带参查询: 1打开Productbll.cs文件,在上一章的GetProduct方法之后添加一个GetProductByProductID方法,代码如下: [https://www.wendangku.net/doc/eb17125128.html,ponentModel.DataObjectMethodAttribute(https://www.wendangku.net/doc/eb17125128.html,ponentModel. DataObjectMethodType.Select, true)] public IQueryable GetProductByProductID(int productID) { var product = from p in db.Products where p.ProductID == productID select p; return product; } 2简单的代码解释: 1)首先是一段声明,告诉自动识别系统该方法是查询方法。 2)注意我们使用了IQueryable类型,该类型是返回值的类型,可以直接作为Datasource使用。

3)然后是LINQ语句,意为从db中的Products表(已经对象化)选取ProductID=参数productID的记录 4)最后返回product(IQueryable类型) 3新建一个页面,插入一个GridView,一个TextBox和一个Botton,Botton的Text属性改为“输入产品ID查询结果”。 4双击Botton,在按钮事件中输入如下代码: GridView1.DataSource = product.GetProductByProductID(Convert.ToInt16(Text Box1.Text)); GridView1.DataBind(); 5运行该页面,在文本框中输入一个存在的ProductID,然后单击Botton按钮,将显示对应ProductID的产品的记录。 二、插入一条记录 1在GetProductByProductID方法后面新增一个方法AddProduct,代码如下: [https://www.wendangku.net/doc/eb17125128.html,ponentModel.DataObjectMethodAttribute(https://www.wendangku.net/doc/eb17125128.html,ponentModel. DataObjectMethodType.Insert, true)] public bool AddProduct(string productName, int? supplierID, int? categoryI D, string quantityPerUnit,decimal? unitPrice, short? unitsInStock, short? unitsOnO rder, short? reorderLevel,bool discontinued) { Product nproduct = new Product();

LINQ基本语法及其示例

LINQ基本语法及其示例 说明: 1、在未作任何说明的情况下,以下用到的db变量都是DataContext的实例对象,声明语法类似如下: using (BP_DataClassesDataContext db = new BP_DataClassesDataContext(ConnectionStrings.GetInstance("ZJ").Con)) { //Code } 2、默认q为Iqueryable类型变量 简单查询: var q = from p in db.view_PreTestResultAuditList select p; 简单条件查询: 方式一:直接使用where关键字 var q = from c in db.view_PrTestList where c.FTestmanID.Equals(UserContext.CurrentUser.FID) select c; 方式二:使用lambda 表达式 var q = db.TOriInfoAutoMemory.Where(c => c.FSampleName == sampleName); 使用&&和|| 带代替And或Or关键字: var entity = db.TSampleOriginalInfo.FirstOrDefault(c => c.FFromID.Equals(fromID) && c.FSampleID.Equals(sampleID)); like模糊条件查询: //使用C#中的Contains关键字代替SQL中的like关键字 q = q.Where(c => c.FTaskCode.Contains(https://www.wendangku.net/doc/eb17125128.html,)); In包含查询: /// string[] var certi = (from c in db.TMSCertificate where certificateIDs.ToList().Contains(c.FID.ToString()) select c).ToList(); 等价于:select * from TMSCertificate where FID in /* certificateIDs */ Skip和Take实现分页查询: var q = from c in db.view_PrTestList where c.FTestmanID.Equals(UserContext.CurrentUser.FID) select c; twi.data = (q.Skip(paging.startIndex).Take(paging.pageSize)).ToList(); //其中startIndex:跳过的系列中指定的条数 // pageSize:每页显示条数(记录数) Distinct方法去除重复: var p = (from c in dc.TSampleOriginalInfo where sampleIDs.Contains(c.FSampleID.ToString()) select new { c.FFromID,

LINQ教程

1、LINQ表达式 LINQ语言集成查询(Language Integrated Query) LINQ 最明显的“语言集成”部分是查询表达式。查询表达式是使用C# 3.0 中引入的声明性查询语法编写的。通过使用查询语法,您甚至可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作。您使用相同的基本查询表达式模式来查询和转换SQL 数据库、https://www.wendangku.net/doc/eb17125128.html, 数据集、XML 文档和流以及 .NET 集合中的数据。 下面的示例演示了完整的查询操作。完整操作包括创建数据源、定义查询表达式,以及在foreach语句中执行查询。 class LINQQueryExpressions { staticvoid Main() { // Specify the data source. int[] scores = newint[] { 97, 92, 81, 60, 89, 45, 34, 78 }; // Define the query expression. IEnumerable scoreQuery = from score in scores where score > 80 select score; // Execute the query.

foreach (int i in scoreQuery) { Console.Write(i + " "); } } } // Output: 97 92 81 89

2、LINQ查询 “查询”是指一组指令,这些指令描述要从一个或多个给定数据源检索的数据以及返回的数据应该使用的格式和组织形式。查询不同于它所产生的结果。 通常,源数据会在逻辑上组织为相同种类的元素序列。SQL 数据库表包含一个行序列。与此类似,https://www.wendangku.net/doc/eb17125128.html, DataTable 包含一个DataRow 对象序列。在XML 文件中,有一个XML 元素“序列”(不过这些元素按分层形式组织为树结构)。内存中的集合包含一个对象序列。 从应用程序的角度来看,原始源数据的具体类型和结构并不重要。应用程序始终将源数据视为一个IEnumerable<(Of <(T>)>) 或IQueryable<(Of <(T>)>) 集合。在LINQ to SQL 中,源数据显示为一个 IEnumerable。在LINQ to DataSet 中,它是一个IEnumerable。在LINQ to SQL 中,它是您定义用来表示SQL 表中数据的任何自定义对象的IEnumerable 或IQueryable。 检索一个元素子集以产生一个新序列,但不修改单个元素。然后,查询可以按各种方式对返回的序列进行排序或分组,如下面的示例所示(假定scores 是int[]): IEnumerable highScoresQuery = from score in scores where score > 80

Linq查询简介

莁LINQ 蒈LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。 肅基本概念 螃从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及orderby(C#)中。试用这些操作可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。 肀经过了最近 20 年,面向对象编程技术( object-oriented (OO) programming technologies )在工业领域的应用已经进入了一个稳定的发展阶段。程序员现在都已经认同像类(classes)、对象(objects)、方法(methods)这样的语言特性。考察现在和下一代的技术,一个新的编程技术的重大挑战开始呈现出来,即面向对象技术诞生以来并没有解决降低访问和整合信息数据( accessing and integrating information )的复杂度的问题。其中两个最主要访问的数据源与数据库( database )和 XML 相关。 蒈LINQ 提供了一条更常规的途径即给 .Net Framework 添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose )的语法查询特性( query facilities ),这是比向开发语言和运行时( runtime )添加一些关系数据( relational )特性或者类似 XML 特性( XML-specific )更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。

LINQ增删改查

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using https://www.wendangku.net/doc/eb17125128.html,mon; using System.Collections.Generic; namespace FirstLinq { public partial class _Default : System.Web.UI.Page { NorthwindDataContext ctx = new NorthwindDataContext("Data Sou rce=ZHANGSHUQIANG;Initial Catalog=Northwind;Persist Security Inf o=True;User ID=sa;Password=sa"); protected void Page_Load(object sender, EventArgs e) { Linq1(); Linq2(); Linq3(); } ///

///增删改查 ///

private void Linq3() { //增 t_User user = new t_User(); https://www.wendangku.net/doc/eb17125128.html,erName = "大气象"; user.Pwd = "123456"; ctx.t_User.InsertOnSubmit(user);//以前的方法是Add(); ctx.SubmitChanges(); //改 //参考这样的语法string s = (from a in ctx.Customers select a).Si ngle(a => a.ID == 2); t_User userUpdate = ctx.t_User.SingleOrDefault(t_User => t_Use r.ID == 2);//Single与SingleOrDefault没区别 https://www.wendangku.net/doc/eb17125128.html,erName = "大气象1"; ctx.SubmitChanges(); //删 t_User userDelete = (from userinfo in ctx.t_User where userinfo.I D == 1 select userinfo).FirstOrDefault(); if (userDelete != null) {

LINQ体验(5)——LINQ to SQL语句之Select、Distinct和Count、Sum、Min、Max、Avg

上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects、LINQ to DataSets、LINQ to SQL、LI NQ to Entities、LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所有的数据都要在数据库运行着各种操作。所以先来学习LINQ to SQL,其它的都差不多了,那么就从Select 说起吧,这个在编写程序中也最为常用。本篇详细说明一下Select和Count/Sum/Min/Max/Avg。 Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗。 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来;延迟。 Select/Distinct操作包括9种形式,分别为简单形式、匿名类型形式、带条件形式、指定类型形式、过滤类型形式、shaped类型形式、嵌套类型形式、LocalMethodCall形式、Distinct形式。 1.简单形式: 注意:这个语句只是一个声明或者一个描述,并没有真正把数据取出来,只有当你需要该数据的时候,它才会执行这个语句,这就是延迟加载(deferred loading)。如果,在声明的时候就返回的结果集是对象的集合。你可以使用ToList() 或ToArray()方法把查询结果先进行保存,然后再对这个集合进行查询。当然延迟加载(deferred loading)可以像拼接SQL语句那样拼接查询语法,再执行它。 2.匿名类型形式: 说明:匿名类型是C#3.0中新特性。其实质是编译器根据我们自定义自动产生一个匿名的类来帮助我们实现临时变量的储存。匿名类型还依赖于另外一个特性:支持根据property来创建对象。比如,var d = new { Name = "s" };编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。但是var d = new {"s"};是编译不通过的。因为,编译器不知道匿名类中的p roperty的名字。例如string c = "d";var d = new { c}; 则是可以通过编译的。编译器会创建一个叫做匿名类带有叫c的property。 例如下例:new{c,ContactName,c.Phone};ContactName和Phone都是在映射文件中定义与表中字段相对应的property。编译器读取数据并创建对象时,会创建一个匿名类,这个类有两个属性,为Cont actName和Phone,然后根据数据初始化对象。另外编译器还可以重命名property的名字。

一、Linq有两种语法

一、Linq有两种语法: 1、方法语法 2、查询语法 下面举个例子看看这两种方法的区别 比如现在有一个学生类 public class student { public string username { get; set; } public int age { get; set; } public string sex { get; set; } } 我们通过一个方法来添加很多同学 public IList GetStu(int n) { IList stuList = new List(); for (int i = 0; i < n; i++) { student stu = new student(); stu.age = 25 + i; stu.sex = "男" + i; https://www.wendangku.net/doc/eb17125128.html,ername = "张三" + i; stuList.Add(stu); } return stuList; } 那么这个方法返回的就是一个list集合,下面我们就可以通过linq对这个集合进行操作 首先我们来查询所有的学生 A、查询语法: var list = GetStu(10); var result = from s in list select new { stuname=https://www.wendangku.net/doc/eb17125128.html,ername,sex=s.sex,age=s.age}; 这是linq常用的语法from 变量 in 集合 Select 变量 B、方法语法 var result1 = list.Select(s1 => new{ username = https://www.wendangku.net/doc/eb17125128.html,ername, age = s1.age, sex = s1.sex }); 这就是方法语法,符合一般的C#语法 这两种方法的执行结果是一样的,唯一的区别就是语法 二、输出的方式 输出的方式也有两种,我们知道linq主要对集合进行操作的,所以一般都需要循环输出 第一种输出方式: string stt = null; foreach (var sa in result3)

相关文档