C#编写LINQ查询

虽然在前面的文章里编写了一些LINQ查询,但是没有解释LINQ是如何工作的,现在,我们花点时间来正确的理解它们。
LINQ有多个组成部分,有些是必须的,而有些是可选的。

  • 扩展方法:包括Where、Select、OrderBy 等。这些扩展方法使得对集合和数据源进行查询操作变得更加直观和易于理解。
  • 表达式:在 LINQ 中,表达式通常指 Lambda 表达式,即匿名函数。Lambda 表达式允许我们在 LINQ 查询中编写条件筛选和投影操作,这为 LINQ 提供了强大的功能。通过 Lambda 表达式,我们可以以一种简洁的方式编写复杂的查询逻辑,并将其嵌入到 LINQ 查询中以实现灵活的数据处理。
  • LINQ查询理解语句:查询理解语法是 LINQ 提供的另一种编写查询的方式,它类似于 SQL 查询语句的语法风格。使用查询理解语法,开发人员可以更直观地编写 LINQ 查询,使用类似于 SQL 的关键字(如 from、where、select 等)来构建查询。查询理解语法在编写复杂的查询时具有清晰的结构,并且易于阅读和理解。

1.使用Enumerable类扩展序列

使用 Enumerable 类可以对序列(IEnumerable 接口的实现类)进行各种扩展操作,例如过滤、映射、排序等。

扩展方法 说明
Where 根据指定条件过滤序列中的元素。
Select 对序列中的每个元素应用转换函数,返回包含结果的新序列。
SelectMany 对序列中的每个元素应用转换函数,并将结果序列扁平化为单个序列。
Take 从序列的开头返回指定数量的元素。
Skip 跳过序列的指定数量的元素,然后返回剩余的元素。
OrderBy 按升序对序列中的元素进行排序。
OrderByDescending 按降序对序列中的元素进行排序。
Concat 连接两个序列。
Distinct 返回一个去除了重复元素的序列。
Union 返回两个序列的并集(去除重复元素)。
Intersect 返回两个序列的交集。
Except 返回存在于第一个序列中但不存在于第二个序列中的元素。
Any 确定序列是否包含任何元素或满足特定条件的元素。
All 确定序列中的所有元素是否都满足指定条件。
Count 返回序列中的元素数量。
Sum 计算序列中数值元素的和。
Min 返回序列中的最小值。
Max 返回序列中的最大值。
Average 计算序列中数值元素的平均值。
First 返回序列中的第一个元素。
FirstOrDefault 返回序列中的第一个元素,如果序列为空则返回默认值。
Last 返回序列中的最后一个元素。
LastOrDefault 返回序列中的最后一个元素,如果序列为空则返回默认值。
Single 返回仅有一个元素的序列中的元素,如果序列为空或包含多个元素则引发异常。
SingleOrDefault 返回仅有一个元素的序列中的元素,如果序列为空则返回默认值,如果包含多个元素则引发异常。
ElementAt 返回序列中指定索引处的元素。
ElementAtOrDefault 返回序列中指定索引处的元素,如果索引超出范围则返回默认值。

以上是 Enumerable 类定义的一些常用扩展方法,它们提供了对序列进行筛选、投影、排序以及聚合等多种操作。这些方法可以帮助开发人员更便捷地处理集合数据,使得对数据的操作变得更加灵活和高效。

2.使用Where扩展方法过滤实体

通过使用 Where 扩展方法,我们可以便捷地对实体集合进行条件筛选,从而得到符合特定条件的子集。

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

class Program
{
   
    static void Main()
    {
   
        List<Person> people = new List<Person>
        {
   
            new Person {
    Name = "Alice", Age = 25 },
            new Person {
    Name = "Bob", Age =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林祖师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值