8 C# LINQ与Lambda表达式之LINQ方法语法

在上一篇中,我们探讨了LINQ查询语法,它是一种以SQL风格书写,易于理解且语法清晰的查询方式。然而,在实际开发中,我们常常会用到LINQ方法语法,这种语法适用于各种集合(如列表、数组等)上的操作,并且在某些场合下,可能会显得更加灵活和强大。接下来,我们将深入探讨LINQ方法语法的用法,并通过一些案例来演示其特点。

LINQ方法语法概述

LINQ方法语法主要依赖于.NET中集合类型的方法。通过链式调用,可以实现对集合的各种操作。常用的LINQ方法包括:

  • Select: 用于投影选择
  • Where: 用于过滤
  • OrderByOrderByDescending: 用于排序
  • GroupBy: 用于分组
  • Join: 用于连接多个集合
  • AnyAll: 用于检查条件是否成立

使用LINQ方法语法时,我们通常需要使用using System.Linq;指令来引入所需的命名空间。

案例一:使用WhereSelect方法

考虑以下数据模型:

1
2
3
4
5
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}

现在,我们有一个学生列表,我们希望筛选出所有年龄大于18岁的学生,并只获取他们的名字。使用LINQ方法语法,我们可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;

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

// 使用LINQ方法语法筛选和选择
var adultNames = students
.Where(s => s.Age > 18) // 筛选年龄大于18的学生
.Select(s => s.Name); // 选择他们的名字

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

在这个案例中,我们使用了Where方法来过滤出年龄大于18岁的学生,然后用Select方法来选择他们的名字。这个过程是通过链式调用实现的,代码可读性较高。

案例二:使用OrderByGroupBy方法

在另一个例子中,我们想对学生按照年龄进行排序,并根据年龄分组。我们可以使用OrderByGroupBy方法来实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
public static void Main()
{
List<Student> students = new List<Student>
{
new Student { Name = "Alice", Age = 20 },
new Student { Name = "Bob", Age = 19 },
new Student { Name = "Charlie", Age = 20 },
new Student { Name = "Diana", Age = 18 },
};

// 排序并分组
var groupedStudents = students
.OrderBy(s => s.Age) // 按年龄升序排序
.GroupBy(s => s.Age); // 按年龄分组

foreach (var group in groupedStudents)
{
Console.WriteLine($"Age: {group.Key}");
foreach (var student in group)
{
Console.WriteLine($" - {student.Name}");
}
}
}
}

在这个例子中,OrderBy方法首先对学生列表中的学生按年龄进行排序,接着,GroupBy方法根据年龄将其分组。这里的group.Key代表组的键值(即年龄),而内部的循环则遍历每个组中的学生。

总结

LINQ方法语法提供了一种灵活且强大的方式来操作集合,与查询语法相比,更加注重方法的组合与链式调用。在本篇中,我们学习了如何使用WhereSelectOrderByGroupBy等方法对集合进行筛选、转化以及分组。这些方法不仅提高了代码的可读性,也使得操作变得更加直观。接下来,我们将继续深入探讨LINQ与集合的组合使用,敬请期待!

8 C# LINQ与Lambda表达式之LINQ方法语法

https://zglg.work/csharp-one/8/

作者

IT教程网(郭震)

发布于

2024-08-13

更新于

2024-08-13

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论