跳到主要内容

C# LINQ 投影

介绍

在 C# 中,LINQ(Language Integrated Query)是一种强大的工具,用于查询和操作数据。LINQ 投影是 LINQ 中的一个重要概念,它允许你从数据源中选择特定的数据,并将其转换为新的形式。简单来说,投影就是从一个集合中选择部分数据或对数据进行转换。

在 LINQ 中,投影通常通过 Select 方法来实现。Select 方法允许你指定一个 lambda 表达式,该表达式定义了如何将源数据转换为新的形式。

基本语法

Select 方法的基本语法如下:

csharp
var result = source.Select(item => transformation);
  • source 是你要查询的数据源(例如一个集合)。
  • item 是数据源中的每个元素。
  • transformation 是一个 lambda 表达式,定义了如何将 item 转换为新的形式。

代码示例

假设我们有一个包含学生信息的列表,每个学生对象包含 NameAge 属性。我们想要从这个列表中提取所有学生的名字。

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

class Program
{
static void Main()
{
var students = new List<Student>
{
new Student { Name = "Alice", Age = 20 },
new Student { Name = "Bob", Age = 22 },
new Student { Name = "Charlie", Age = 21 }
};

var names = students.Select(student => student.Name);

foreach (var name in names)
{
Console.WriteLine(name);
}
}
}

class Student
{
public string Name { get; set; }
public int Age { get; set; }
}

输出

Alice
Bob
Charlie

在这个例子中,我们使用 Select 方法从 students 列表中提取了每个学生的 Name 属性,并将其存储在一个新的集合 names 中。

实际应用场景

场景 1:从数据库中提取特定字段

假设你正在开发一个应用程序,需要从数据库中提取用户的电子邮件地址列表。使用 LINQ 投影,你可以轻松地从用户对象中提取 Email 字段。

csharp
var emails = users.Select(user => user.Email);

场景 2:转换数据类型

有时你可能需要将数据从一种类型转换为另一种类型。例如,将整数列表转换为字符串列表:

csharp
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var strings = numbers.Select(num => num.ToString());

场景 3:创建匿名对象

你还可以使用 Select 方法创建匿名对象。例如,从学生列表中提取姓名和年龄,并将它们组合成一个新的匿名对象:

csharp
var studentDetails = students.Select(student => new { student.Name, student.Age });

总结

LINQ 投影是 C# 中一个非常有用的功能,它允许你从数据源中选择特定的数据并将其转换为新的形式。通过 Select 方法,你可以轻松地提取字段、转换数据类型或创建匿名对象。

提示

在实际开发中,LINQ 投影可以帮助你简化代码并提高可读性。尝试在你的项目中使用投影操作,看看它如何帮助你更高效地处理数据。

附加资源

练习

  1. 给定一个包含产品信息的列表,每个产品对象包含 NamePrice 属性。使用 LINQ 投影提取所有产品的名称和价格,并将它们存储在一个新的集合中。
  2. 尝试使用 LINQ 投影将一个整数列表转换为字符串列表,并在控制台中输出结果。

通过完成这些练习,你将更好地理解 LINQ 投影的概念及其在实际开发中的应用。