首页 / 教程列表 / LINQ教程 / LINQ查询语法

LINQ查询语法

1383 更新于: 2021-11-01 读完约需 10 分钟

查询语法(Query Syntax)

.NET应用程序开发中的LINQ查询语法(Query Syntax)与数据库的SQL语句有些类似,你可以在C#,VB.NET或者F#任意一种编程语言中使用LINQ的查询语法,本系列文章将主要使用C#语言进行示例演示。

LINQ查询语法的格式如下:

登录后复制
from <集合变量(别名)> in <集合(实现了IEnumerable或IQueryable)> <标准查询操作符> <lambda表达式> <select或groupBy操作符> <返回信息>

LINQ查询语法以from关键字开始,以select关键字结束。下面是一个LINQ查询示例,它返回一个包含关键字“教程”的字符串子集合。

登录后复制
// 引入System.Linq命名空间 using System.Linq; static void Main() { // 声明一个字符串集合,具体表示码友网开设的免费在线教程标题列表 var courses = new List<string> { "C#程序设计基础", "LINQ教程", "Flurl中文文档", "Elasticsearch.NET/NEST中文文档", "C#+ADO.NET数据库入门教程" }; // 使用LINQ查询语法从以上教程列表的标题中找出包含“教程”这个关键字的教程集合 var result = from x in courses where x.Contains("教程") select x; Console.WriteLine("包含关键字[教程]的结果分别为:"); // 在控制台输出查找到的结果 foreach (var course in result) { Console.WriteLine($"{course}"); } Console.ReadKey(); }

注:使用LINQ语法,需引入命名空间System.Linq

以上示例中,首先声明了一个字符串集合courses,用来表示码友网开设的免费在线教程标题列表,分别为:《C#程序设计基础》《C#+ADO.NET数据库入门教程》《Flurl中文文档》《Elasticsearch.NET/NEST中文文档》《LINQ教程》

接着,使用LINQ的查询语法从以上教程列表courses的标题集合中找出包含“教程”这个关键字的教程集合,如下图:

下面来分析上图中各个标号的含义:

1.定义一个变量result用以保存LINQ的查询结果。
2.使用from关键字开始LINQ查询语法,然后定义一个集合的变量(别名),它是集合courses的别名,类似SQL语句中表的别名。这里定义的是x,你可以定义为符合C#语言变量命名规范的任意变量名。
3.实现了IEnumerableIQueryable的集合。
4.查询操作符,使用where关键字表示对courses集合进行数据筛选。在from子句之后,可以使用不同的标准查询操作符来过滤、分组和连接集合的元素,LINQ中内置了大约50个标准查询操作符。
5.x.Contains("教程")查询条件(以lambda表达式方式书写)。
6.使用select关键字以返回查询结果,select x表示把符合条件的元素原样返回,当然也可以返回其他形式的结果,后续内容将具体介绍。

LINQ查询语法实例

以下是一个对订单集合进行的LINQ查询操作,找出订单集合orders中来源为”线上”的所有订单,代码示例如下:

登录后复制
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { public class Program { static void Main() { var orders = new List<Order> { new Order{Id = 1, Customer="Rector",Price= 3699.00D,Source="线上"}, new Order{Id = 2, Customer="James",Price= 2699.00D,Source="线上"}, new Order{Id = 3, Customer="Chris",Price= 1999.00D,Source="线下"}, new Order{Id = 4, Customer="Steven",Price= 5699.00D,Source="线上"}, new Order{Id = 5, Customer="Jo",Price= 2569.00D,Source="线下"} }; var result = from o in orders where o.Source == "线上" select o; foreach (var order in result) { Console.WriteLine($"{order.Id},{order.Customer},{order.Price},{order.Source}"); } Console.ReadKey(); } } /// <summary> /// 订单实体 /// </summary> public class Order { /// <summary> /// ID /// </summary> public int Id { get; set; } /// <summary> /// 客户名称 /// </summary> public string Customer { get; set; } /// <summary> /// 订单金额 /// </summary> public double Price { get; set; } /// <summary> /// 订单来源 /// </summary> public string Source { get; set; } } }

运行结果如下:

登录后复制
1,Rector,3699,线上 2,James,2699,线上 4,Steven,5699,线上

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

没有上一篇了

本文永久链接码友网 » LINQ教程 » LINQ查询语法 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册