跳到主要内容

C# LINQ 方法语法

介绍

LINQ(Language Integrated Query)是 C# 中用于查询和操作数据的强大工具。LINQ 提供了两种语法形式:查询语法和方法语法。本文将重点介绍 LINQ 方法语法,它使用扩展方法和 lambda 表达式来构建查询。

方法语法更加灵活,适合复杂的查询操作,并且与 C# 的其他功能(如委托和 lambda 表达式)紧密结合。通过学习方法语法,你将能够更高效地处理集合和数据源。

基本概念

LINQ 方法语法基于一系列扩展方法,这些方法定义在 System.Linq 命名空间中。常用的方法包括 WhereSelectOrderByGroupBy 等。这些方法通常与 lambda 表达式一起使用,以定义查询逻辑。

示例:基本查询

以下是一个简单的示例,展示如何使用 LINQ 方法语法从一个整数集合中筛选出偶数:

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

class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenNumbers = numbers.Where(n => n % 2 == 0);

foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}

输出:

2
4
6
8
10

在这个示例中,Where 方法用于筛选集合中的元素,n => n % 2 == 0 是一个 lambda 表达式,定义了筛选条件。

常用 LINQ 方法

以下是 LINQ 方法语法中一些常用的方法及其用途:

  1. Where:用于筛选集合中满足条件的元素。
  2. Select:用于将集合中的元素转换为另一种形式。
  3. OrderBy / OrderByDescending:用于对集合进行排序。
  4. GroupBy:用于将集合中的元素分组。
  5. First / FirstOrDefault:用于获取集合中的第一个元素。
  6. Any / All:用于检查集合中是否存在满足条件的元素或所有元素是否满足条件。

示例:组合使用 LINQ 方法

以下示例展示了如何组合使用多个 LINQ 方法:

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

class Program
{
static void Main()
{
List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Date", "Elderberry" };

var result = fruits
.Where(f => f.Length > 5) // 筛选长度大于 5 的水果
.OrderBy(f => f) // 按字母顺序排序
.Select(f => f.ToUpper()); // 转换为大写

foreach (var fruit in result)
{
Console.WriteLine(fruit);
}
}
}

输出:

BANANA
CHERRY
ELDERBERRY

在这个示例中,我们首先使用 Where 方法筛选出长度大于 5 的水果,然后使用 OrderBy 方法按字母顺序排序,最后使用 Select 方法将结果转换为大写。

实际应用场景

LINQ 方法语法在实际开发中有广泛的应用,尤其是在处理数据库查询、集合操作和数据处理时。以下是一个实际应用场景:

场景:从数据库中查询用户信息

假设我们有一个用户表,包含用户的姓名、年龄和城市信息。我们需要查询所有年龄大于 18 岁且居住在 "New York" 的用户,并按姓名排序。

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

class User
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}

class Program
{
static void Main()
{
List<User> users = new List<User>
{
new User { Name = "Alice", Age = 25, City = "New York" },
new User { Name = "Bob", Age = 17, City = "Los Angeles" },
new User { Name = "Charlie", Age = 30, City = "New York" },
new User { Name = "David", Age = 20, City = "Chicago" }
};

var result = users
.Where(u => u.Age > 18 && u.City == "New York")
.OrderBy(u => u.Name);

foreach (var user in result)
{
Console.WriteLine($"{user.Name}, {user.Age}, {user.City}");
}
}
}

输出:

Alice, 25, New York
Charlie, 30, New York

在这个场景中,我们使用 LINQ 方法语法从用户集合中筛选出符合条件的用户,并按姓名排序。

总结

LINQ 方法语法是 C# 中处理集合和数据源的强大工具。通过使用扩展方法和 lambda 表达式,你可以轻松地构建复杂的查询和操作。本文介绍了 LINQ 方法语法的基本概念、常用方法以及实际应用场景,帮助你快速上手 LINQ。

附加资源与练习

  • 练习:尝试使用 LINQ 方法语法从一个字符串集合中筛选出所有包含字母 "a" 的字符串,并按长度排序。
  • 资源:查阅 Microsoft 官方文档 以了解更多关于 LINQ 的详细信息。
提示

如果你对 lambda 表达式不熟悉,建议先学习 C# 中的委托和 lambda 表达式,这将帮助你更好地理解 LINQ 方法语法。