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

LINQ查询语法

1239 更新于: 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查询语法 分享:

发表评论

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