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日

相关文章

  • c#动态类型,及动态对象的创建,合并2个对象,map实例

    下面我将为您详细讲解C#动态类型、动态对象的创建、合并2个对象和Map实例的完整攻略。 C#动态类型 在C#中,我们可以使用dynamic关键字定义动态类型。动态类型在编译时不会进行类型检查,而是在运行时才确定类型。这样可以方便地处理一些不确定类型、或者类型不一致的情况,同时也可以增强代码的灵活性。 以下是一个动态类型的示例: dynamic dynamic…

    C# 2023年5月31日
    00
  • ASP.NET 文件压缩解压类(C#)

    ASP.NET文件压缩解压类(C#)是一个可以对文件进行压缩和解压的类,可以让我们在ASP.NET项目中更方便地操作文件。下面是该类的详细攻略。 引用命名空间和类 首先,在您的ASP.NET项目中引用以下命名空间: using System.IO.Compression; 这个命名空间包含了ZipArchive类,它是我们进行文件压缩和解压的核心类。 压缩文…

    C# 2023年5月14日
    00
  • C# Add(T):将元素添加到 ICollection

    C#中的Add(T)方法主要是用来向List集合中添加元素的,T代表数据类型,可以是整型、浮点型、字符串、对象等等。本文将详细讲解C# Add(T)方法的使用方法和注意点。 语法 以下是Add(T)方法的基本语法: public void Add(T item); 参数 Add(T)方法的参数是要添加到List集合中的元素。 返回值 Add(T)方法没有返回…

    C# 2023年4月19日
    00
  • WinForm实现鼠标拖动控件跟随效果

    为了实现WinForm中的鼠标拖动控件跟随效果,我们需要使用下述步骤: 1. 获取鼠标位置 鼠标在界面上移动时,我们需要获取其当前位置。可以通过下面的代码来获取: private void panel1_MouseMove(object sender, MouseEventArgs e) { Point point = Control.MousePositi…

    C# 2023年6月1日
    00
  • ASP 三层架构 Error处理类

    ASP三层架构是一种常用的Web应用开发模式,它把应用程序划分为展示层、业务逻辑层和数据访问层三层,使得应用程序具有更好的可维护性和可扩展性。为了更好地处理异常情况,我们可以采用Error处理类来优化应用程序。 以下是ASP三层架构 Error处理类的完整攻略: 理解三层架构 ASP三层架构包含三个层次,即展示层、业务逻辑层和数据访问层。展示层负责界面显示和…

    C# 2023年6月6日
    00
  • C# 屏蔽由于崩溃弹出的windows异常弹框

    C#程序在崩溃时,会弹出Windows异常弹框,需要用户手动关闭或者点击发送报告,这对于用户来说是一个不友好的体验。为了避免这种情况的发生,可以通过以下方式来屏蔽Windows异常弹框: 使用try-catch语句 在C#中,可以使用try-catch语句来捕捉程序的异常,并处理它们。当程序发生异常时,try-catch语句会跳过异常的语句,并执行catch…

    C# 2023年6月6日
    00
  • C#中LINQ to DataSet操作及DataTable与LINQ相互转换

    下面是详细讲解“C#中LINQ to DataSet操作及DataTable与LINQ相互转换”的完整攻略。 什么是LINQ to DataSet LINQ to DataSet是一组可嵌入到.NET语言中的代码库,使得我们可以在C#或VB.NET中使用LINQ查询DataSet或DataTable的数据。 如何进行LINQ to DataSet操作 我们可…

    C# 2023年5月15日
    00
  • 互斥量mutex的简单使用(实例讲解)

    互斥量mutex的简单使用(实例讲解) 什么是互斥量mutex 互斥量是一种用于保护共享资源的锁,它可以防止多个线程同时访问共享资源,从而保证线程安全。 如何使用互斥量 在使用互斥量之前,我们需要了解一些基本操作。 初始化互斥量 初始化互斥量可以使用pthread_mutex_init函数,该函数有两个参数,第一个参数是互斥量的指针,第二个参数是一个指向pt…

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