博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq查询简介
阅读量:6608 次
发布时间:2019-06-24

本文共 2106 字,大约阅读时间需要 7 分钟。

查询是一种从数据源检索数据的表达式。 查询通常用专门的查询语言来表示。 随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员不得不针对他们必须支持的每种数据源或数据格式而学习新的查询语言。 LINQ 通过提供一种跨各种数据源和数据格式使用数据的一致模型,简化了这一情况。 在 LINQ 查询中,始终会用到对象。 可以使用相同的基本编码模式来查询和转换 XML 文档、SQL 数据库、ADO.NET 数据集、.NET 集合中的数据以及对其有 LINQ 提供程序可用的任何其他格式的数据。

查询操作的三个部分

所有 LINQ 查询操作都由以下三个不同的操作组成:

  1. 获取数据源。

  2. 创建查询。

  3. 执行查询。

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace Linq 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             //创建int类型的数组14             //1.数据源15             int[] myInt = new int[7] {
0,1,2,3,4,5,6 };16 17 //2.创建查询18 var myQuery = from s in myInt19 where (s % 2) == 020 select s; 21 //3.执行查询22 foreach (var item in myQuery)23 {24 Console.WriteLine("{0}",item);25 }26 27 Console.ReadKey();28 29 30 }31 }32 }
View Code

下图显示了完整的查询操作。 在 LINQ 中,查询的执行与查询本身截然不同;换句话说,如果只是创建查询变量,则不会检索任何数据。

 

数据源

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

可查询类型不需要进行修改或特殊处理就可以用作 LINQ 数据源。 如果源数据还没有作为可查询类型出现在内存中,则 LINQ 提供程序必须以此方式表示源数据。 例如,LINQ to XML 将 XML 文档加载到可查询的  类型中:

1 // Create a data source from an XML document. 2 // using System.Xml.Linq;3 XElement contacts = XElement.Load(@"c:\myContactList.xml");

在 LINQ to SQL 中,首先手动或使用  在设计时创建对象关系映射。 针对这些对象编写查询,然后由 LINQ to SQL 在运行时处理与数据库的通信。 在下面的示例中,Customers 表示数据库中的特定表,并且查询结果的类型  派生自 。

1 Northwnd db = new Northwnd(@"c:\northwnd.mdf");2 3 // Query for customers in London.4 IQueryable
custQuery =5 from cust in db.Customers6 where cust.City == "London"7 select cust;

上一个示例中的查询从整数数组中返回所有偶数。 该查询表达式包含三个子句:from、where 和 select。(如果您熟悉 SQL,您会注意到这些子句的顺序与 SQL 中的顺序相反。)from 子句指定数据源,where 子句应用筛选器,select 子句指定返回的元素的类型。  一节中详细讨论了这些子句和其他查询子句。目前需要注意的是,在 LINQ 中,查询变量本身不执行任何操作并且不返回任何数据。 它只是存储在以后某个时刻执行查询时为生成结果而必需的信息。 有关在幕后是如何构建查询的更多信息,请参见。

 

转载地址:http://qqiso.baihongyu.com/

你可能感兴趣的文章
SAP S/4 HANA新变化-信用管理
查看>>
doc-remote-debugging.html
查看>>
DBMS_STATS.GATHER_TABLE_STATS
查看>>
Java-单机版的书店管理系统(练习设计模块和思想_系列 五 )
查看>>
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
云安全:这也是需要花大钱去建设的部分
查看>>
以全局产业观领航智慧城市建设
查看>>
5G网络不止能1秒下一部电影,它还能够…
查看>>
中国电信集采终端6700万部 金额达1070亿元
查看>>
2016年的十个数据中心故事
查看>>
《Java并发编程的艺术》一一3.3 顺序一致性
查看>>
《CCNP SWITCH 300-115认证考试指南》——导读
查看>>
《设计之外——比修图更重要的111件事》—第1部分3 虚心学习
查看>>
Solaris Studio 12.4 Beta update 7/2014
查看>>
EVCache —— Netflix 的分布式内存数据存储
查看>>
《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
查看>>
《Node.js区块链开发》一3.6 总结
查看>>