C# LINQ查询表达式及对应LAMBDA表达式的用法

C# LINQ查询表达式及对应LAMBDA表达式的用法

什么是LINQ?

LINQ全称“Language Integrated Query”,是指将查询语言与C#或VB .NET等 .NET语言无缝集成起来,在编写.NET应用程序时通过添加查询功能支持,使得用户可以查询各种数据源。

LINQ查询表达式

LINQ查询表达式是一种特殊的C#表达式,旨在帮助用户对对象集合进行查询和筛选。LINQ查询表达式使用“查询关键字”指导查询。

基本语法

查询关键字包括:from、where、select、group by、order by、join、let、等等。

以一个字符串列表为例进行查询:

List<string> list = new List<string>() { "Hello", "World", "LINQ", "C#", "Visual", "Studio" };
var result = from s in list
             where s.Contains("o")
             select s;

以上代码的解释如下:

  • from子句:声明一个范围变量s,其范围为当前查询的数据源。
  • where子句:筛选数据源,只保留包含字母o的字符串。
  • select子句:指定查询结果,返回所有符合条件的字符串。

常用操作

1.过滤操作

使用where关键字进行过滤操作:

var result = from s in list
             where s.StartsWith("V")
             select s;

以上代码的意思是从list中筛选出所有以字母V开头的字符串。

2.投影操作

使用select关键字进行投影操作:

var result = from s in list
             select s.ToUpper();

以上代码的意思是将list中所有字符串转换为大写后返回。

3.分组操作

使用group by关键字进行分组操作:

var result = from s in list
             group s by s.Length into g
             select new { Length = g.Key, Words = g.Count() };

以上代码的意思是按字符串长度进行分组,返回每个长度有多少字符串组成。

LAMBDA表达式的用法

LAMBDA表达式是一种匿名函数,其基本语法为:

(parameters) => expression

其中parameters表示输入参数,expression表示函数体。

使用LAMBDA表达式对上述LINQ查询表达式进行改写:

var result = list.Where(s => s.Contains("o"));

以上代码的意思与之前的查询表达式相同:从list中筛选出所有包含字母o的字符串。

使用LAMBDA表达式对分组操作进行改写:

var result = list.GroupBy(s => s.Length)
                 .Select(g => new { Length = g.Key, Words = g.Count() });

以上代码的意思与之前的分组操作相同:按字符串长度分组,返回每个长度有多少字符串组成。

示例

下面是一个完整的示例代码,包括LINQ查询表达式LAMBDA表达式两种写法:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>() { "Hello", "World", "LINQ", "C#", "Visual", "Studio" };

            // LINQ查询表达式
            var result1 = from s in list
                          where s.Contains("o")
                          select s;

            // LAMBDA表达式
            var result2 = list.Where(s => s.Contains("o"));

            // 输出结果
            Console.WriteLine("查询包含字母o的字符串:");
            foreach(var s in result1)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("使用LAMBDA表达式查询包含字母o的字符串:");
            foreach(var s in result2)
            {
                Console.WriteLine(s);
            }

            Console.ReadKey();
        }
    }
}

总结

通过LINQ查询表达式和LAMBDA表达式,可以实现对各种数据源的查询和筛选操作。LINQ查询表达式使用查询关键字进行指导,LAMBDA表达式则可以使代码更加简洁、易读。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# LINQ查询表达式及对应LAMBDA表达式的用法 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • ASP.NET Core中的对象池介绍

    ASP.NET Core中的对象池介绍 在ASP.NET Core中,对象池是一种用于重复使用对象的机制。对象池可以提高应用程序的性能和可伸缩性,减少垃圾回收的负担。在本攻略中,我们将详细讲解ASP.NET Core中的对象池,并提供两个示例说明。 步骤一:创建对象池 在ASP.NET Core中创建对象池,您需要使用Microsoft.Extensions…

    C# 2023年5月17日
    00
  • asp.net网页里面为什么找不到CS文件

    当我们在ASP.NET网站中创建一个新的Web Form页面(.aspx)时,同时也会为该页面创建一个代码文件(.aspx.cs),以便我们可以在其中编写C#代码,并将其与网页的HTML代码相结合。但有时在打开页面时,会发现找不到与页面对应的代码文件,这种情况一般出现在以下两种情况中: 1. CS文件被删除或移动 可能是因为经过一段时间后,我们将项目中某个文…

    C# 2023年6月3日
    00
  • C#向无窗口的进程发送消息

    下面是详细的讲解。 C#向无窗口的进程发送消息的完整攻略 在C#中,我们可以使用Windows API来向无窗口的进程发送消息。下面是完整的攻略。 1. 准备工作 要向无窗口的进程发送消息,我们需要知道目标进程的进程ID(PID)。可以使用Windows API中的Process.GetProcessesByName()方法获取指定名称的进程列表,然后根据需…

    C# 2023年6月6日
    00
  • C# 检索不区分大小写并高亮显示实例详解

    在C#中,我们可以使用正则表达式来实现检索不区分大小写并高亮显示的功能。以下是实现该功能的步骤: 步骤1:引入命名空间 using System.Text.RegularExpressions; 在上面的示例中,我们引入了System.Text.RegularExpressions命名空间,该命名空间包含了正则表达式相关的类和方法。 步骤2:编写检索代码 s…

    C# 2023年5月15日
    00
  • 使.NET6在开发时支持IIS

    在 .NET 6 中,可以使用 InProcess Hosting 模型将 ASP.NET Core 应用程序托管在 IIS 中。以下是详细的攻略: 步骤一:安装 .NET 6 SDK 在使用 .NET 6 在 IIS 中托管 ASP.NET Core 应用程序之前,需要安装 .NET 6 SDK。可以从官方网站下载并安装 .NET 6 SDK。 步骤二:创…

    C# 2023年5月17日
    00
  • c# 实现简单的串口通讯

    下面是详细讲解“c#实现简单的串口通讯”的完整攻略。 硬件准备 在进行串口通讯前,我们需要准备一些硬件设备,包括: 确保计算机中带有串口或者USB转串口的转接器。 一根串口线。 串口通讯设备(例如:单片机)。 环境配置 在进行串口通讯前,需要在电脑上安装串口通讯库,使用.NET的串口类即可实现串口通讯。在Visual Studio中,可以在工具箱中找到串口控…

    C# 2023年5月15日
    00
  • C#迭代器方法介绍

    下面就是关于C#迭代器方法介绍的完整攻略。 什么是迭代器方法 迭代器是一种C#语言中的一种特殊方法,它允许我们以可枚举的方式迭代访问集合中的元素,而不必浪费时间和内存将整个集合复制到数组中。 如何编写迭代器方法 要编写一个迭代器方法,只需要使用yield关键字,将一个或多个元素作为集合的成员返回。这将构建时序集合,每个调用将返回它的下一个元素。在没有更多元素…

    C# 2023年5月15日
    00
  • C#微信公众号与订阅号接口开发示例代码

    下面我将详细讲解如何进行C#微信公众号与订阅号接口开发,并提供以下两个示例说明: 示例一:获取微信公众号基本信息 步骤一:申请开发者账号 首先,你需要到微信公众平台官网上注册一个开发者账号。 步骤二:创建公众号 在申请开发者账号后,你需要创建一个新的公众号。 步骤三:获取AppID和AppSecret 创建公众号后,在公众号设置页面可以获取到AppID和Ap…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部