在现代 C# 开发中,LINQ to Objects 是处理内存中集合数据的强大工具。无论你是刚接触 C# 的新手,还是希望巩固基础知识的开发者,掌握 LINQ to Objects 都能显著提升你操作数组、列表等集合的效率和代码可读性。
LINQ(Language Integrated Query,语言集成查询)是 C# 3.0 引入的一项功能,允许开发者以类似 SQL 的语法对数据源进行查询。LINQ to Objects 特指对实现了 IEnumerable<T> 接口的内存集合(如 List<T>、数组等)进行查询的操作。它无需连接数据库,直接在程序运行时对对象集合进行筛选、排序、分组等操作。
为了演示查询操作,我们先定义一个简单的 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 = "深圳" }}; 使用 Where 方法可以筛选出满足条件的元素。例如,找出所有年龄大于 25 岁的人:
var adults = people.Where(p => p.Age > 25);foreach (var person in adults){ Console.WriteLine(person);} 使用 Select 可以将集合中的每个元素转换为新形式。例如,只获取所有人的姓名:
var names = people.Select(p => p.Name);foreach (var name in names){ Console.WriteLine(name);} 按年龄升序排列:
var sortedByAge = people.OrderBy(p => p.Age);foreach (var person in sortedByAge){ Console.WriteLine(person);} 按城市对人员进行分组:
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}"); }} 查找第一个来自“北京”的人:
var firstBeijinger = people.FirstOrDefault(p => p.City == "北京");if (firstBeijinger != null){ Console.WriteLine(firstBeijinger);} 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 的朋友。
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251210167.html