当前位置:首页 > C# > 正文

掌握LINQ to Objects:C#开发者的对象集合查询利器(C# LINQ查询入门与实战)

在现代 C# 开发中,LINQ to Objects 是处理内存中集合数据的强大工具。无论你是刚接触 C# 的新手,还是希望巩固基础知识的开发者,掌握 LINQ to Objects 都能显著提升你操作数组、列表等集合的效率和代码可读性。

掌握LINQ to Objects:C#开发者的对象集合查询利器(C# LINQ查询入门与实战) LINQ Objects C# LINQ查询 对象集合查询 C#基础教程 第1张

什么是 LINQ to Objects?

LINQ(Language Integrated Query,语言集成查询)是 C# 3.0 引入的一项功能,允许开发者以类似 SQL 的语法对数据源进行查询。LINQ to Objects 特指对实现了 IEnumerable<T> 接口的内存集合(如 List<T>、数组等)进行查询的操作。它无需连接数据库,直接在程序运行时对对象集合进行筛选、排序、分组等操作。

为什么使用 LINQ to Objects?

  • 代码更简洁、可读性更强
  • 减少传统 for/foreach 循环中的样板代码
  • 支持链式调用,灵活组合多种操作
  • 类型安全,编译时即可发现错误

准备工作:定义一个测试类

为了演示查询操作,我们先定义一个简单的 Person 类:

public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string City { get; set; }    public override string ToString()    {        return $"{Name}, {Age}岁, 来自{City}";    }}

创建测试数据

接下来,我们创建一个包含多个 Person 对象的列表:

var people = new List<Person>{    new Person { Name = "张三", Age = 25, City = "北京" },    new Person { Name = "李四", Age = 30, City = "上海" },    new Person { Name = "王五", Age = 22, City = "广州" },    new Person { Name = "赵六", Age = 35, City = "北京" },    new Person { Name = "孙七", Age = 28, City = "深圳" }};

基础查询操作详解

1. Where:筛选数据

使用 Where 方法可以筛选出满足条件的元素。例如,找出所有年龄大于 25 岁的人:

var adults = people.Where(p => p.Age > 25);foreach (var person in adults){    Console.WriteLine(person);}

2. Select:投影转换

使用 Select 可以将集合中的每个元素转换为新形式。例如,只获取所有人的姓名:

var names = people.Select(p => p.Name);foreach (var name in names){    Console.WriteLine(name);}

3. OrderBy / OrderByDescending:排序

按年龄升序排列:

var sortedByAge = people.OrderBy(p => p.Age);foreach (var person in sortedByAge){    Console.WriteLine(person);}

4. GroupBy:分组

按城市对人员进行分组:

var groupedByCity = people.GroupBy(p => p.City);foreach (var group in groupedByCity){    Console.WriteLine($"城市: {group.Key}");    foreach (var person in group)    {        Console.WriteLine($"  - {person.Name}");    }}

5. First / FirstOrDefault:获取第一个匹配项

查找第一个来自“北京”的人:

var firstBeijinger = people.FirstOrDefault(p => p.City == "北京");if (firstBeijinger != null){    Console.WriteLine(firstBeijinger);}

查询表达式 vs 方法语法

LINQ 支持两种写法:查询表达式(类似 SQL)和方法语法(链式调用)。两者功能等价,可根据喜好选择。

方法语法(推荐初学者使用):

var result = people.Where(p => p.Age > 25).OrderBy(p => p.Name);

查询表达式:

var result = from p in people             where p.Age > 25             orderby p.Name             select p;

总结

通过本文,你已经掌握了 LINQ to Objects 的基本用法,包括筛选、投影、排序、分组等核心操作。这些技能是每一位 C# 开发者必须掌握的C#基础教程内容。无论你在开发 Web 应用、桌面软件还是游戏,C# LINQ查询都能让你的代码更优雅高效。

记住,LINQ 操作默认是延迟执行的——只有在遍历结果(如 foreach)或调用 ToList() 等方法时才会真正执行查询。这一点在性能优化中非常重要。

现在,你可以尝试在自己的项目中使用这些技巧,体验 对象集合查询带来的便利!如果你觉得本文对你有帮助,欢迎分享给其他正在学习 LINQ to Objects 的朋友。