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

yizhihongxing

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日

相关文章

  • C# FileAttributes.Archive:表示文件为归档文件

    FileAttributes.Archive方法的作用与使用方法 作用 在C#语言中,FileAttributes.Archive方法是用来获取或设置文件(或文件夹)的归档属性的。在计算机领域中,归档属性通常被用于标识哪些文件需要备份或复制,或者已经被备份或复制过。当我们修改或者创建一个文件时,系统会自动将该文件的归档属性置为“归档”(Archive)。也就…

    C# 2023年4月19日
    00
  • 基于.NET Core 3.1 网站开发和部署的方法

    基于.NET Core 3.1网站开发和部署的方法 .NET Core 3.1是一个跨平台的开发框架,可以用于开发Web应用程序。在本攻略中,我们将介绍基于.NET Core 3.1的网站开发和部署的方法,并提供两个示例说明。 1. 创建.NET Core 3.1 Web应用程序 可以按照以下步骤创建.NET Core 3.1 Web应用程序: 打开Visu…

    C# 2023年5月16日
    00
  • C#求n个数中最大值和最小值的方法

    C#求n个数中最大值和最小值的方法 在 C# 中求解 n 个数中最大值和最小值有多种方法,下面将给出两种常用的方法: 方法一:使用 Arrays 类的 Sort 和第一个元素和最后一个元素的方法 这种方法先使用 Arrays 类的 Sort 方法将所有数从小到大排序,然后取出排序后的第一个元素作为最小值,最后一个元素作为最大值。 示例代码如下: int[] …

    C# 2023年6月1日
    00
  • C#的静态工厂方法与构造函数相比有哪些优缺点

    C#中的静态工厂方法与构造函数相比,有以下优缺点: 优点 更具有表现力:静态工厂方法可以有任意的返回类型,它们的函数名可以更好地反映其作用,可以将多个构造函数重载的实现合并为一个方法。 更加可读性:静态工厂方法可以通过名称来描述对象的创建语义,比如CreateInstance、FromValue、CreateValidator等等,让用户更容易理解对象的含义…

    C# 2023年6月3日
    00
  • C#实现插入排序

    下面是关于C#实现插入排序的详细攻略。 什么是插入排序 插入排序是一种简单直观的排序算法,其基本思想是将待排序的数据分为已排序和未排序两部分,每次从未排序的部分中取出一个元素,将其插入到已排序的部分中,直到所有元素都插入完毕。 实现插入排序的步骤 实现插入排序算法的步骤如下: 定义一个数组作为待排序的数组。 遍历数组,开始排序。 对于每个遍历到的元素,将其与…

    C# 2023年6月6日
    00
  • asp.net core项目授权流程详解

    以下是“ASP.NET Core项目授权流程详解”的完整攻略: 什么是ASP.NET Core授权 ASP.NET Core授权是一种机制,用于限制用户对应用程序中的资源的访问。它允许您定义哪些用户访问哪些资源,并在用户尝试访问受保护的资源时执行必要的验证。 ASP.NET Core授权流程 ASP.NET Core授权流程包括以下步骤: 用户尝试访问受保护…

    C# 2023年5月12日
    00
  • 在c#中使用servicestackredis操作redis的实例代码

    在C#中使用ServiceStack.Redis操作Redis的实例代码,需要按照以下步骤进行: 引入ServiceStack.Redis包 使用NuGet包管理器,搜索并下载ServiceStack.Redis包,或者使用命令行工具安装:Install-Package ServiceStack.Redis 创建RedisManagerPool 在需要使用r…

    C# 2023年5月31日
    00
  • .Net反向代理组件Yarp用法详解

    以下是“.Net反向代理组件Yarp用法详解”的完整攻略: 什么是Yarp Yarp(Yet Another Reverse Proxy)是一个开源的反向代理组件,由微软开发。它是一个轻量级、高性能、可扩展的反向代理组件,可以用于构建高性能的微服务网关、API网关等。 Yarp的特性 Yarp具有以下特性: 支持HTTP、HTTPS、WebSocket等协议…

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