LINQ是C#中集成查询功能,支持用SQL式语法或Lambda表达式操作数据源;其查询语法结构清晰,方法语法结合Where、Select、OrderBy等链式调用更灵活高效;支持延迟执行,遍历时才运行,可提升数据处理效率。

LINQ(Language Integrated Query)是C#中用于查询数据的强大功能,它将查询能力直接集成到语言中,让你可以用类似SQL的语法或Lambda表达式来操作集合、数据库、XML等多种数据源。最常见的是对数组、列表等集合进行筛选、排序、分组等操作,代码更清晰,开发效率更高。
LINQ提供了两种主要语法风格:查询语法和方法语法。查询语法看起来更像SQL,适合初学者快速上手。
假设你有一个学生列表:
var students = new List<Student>
{
new Student { Name = "Alice", Age = 20 },
new Student { Name = "Bob", Age = 22 },
new Student { Name = "Charlie", Age = 20 }
};
你想找出所有年龄为20岁的学生,可以这样写:
var result = from s in students
where s.Age == 20
select s;
这段代码使用了from...where...select结构,逻辑清晰:从students中取出每个元素s,筛选出Age等于20的,然后返回这些对象。
LINQ方法语法结合Lambda表达式是更常用的方式,尤其在链式调用中非常高效。
上面的例子用方法语法可以写成:
var result = students.Where(s => s.Age == 20);
s => s.Age == 20 就是一个Lambda表达式,意思是“输入s,返回s.Age是否等于20”。这种写法更紧凑,也更容易与其他操作组合。
常见的LINQ方法包括:
来看一个综合例子:找出名字以"A"开头的学生,按年龄升序排列,只显示姓名。
var query = students
.Where(s => s.Name.StartsWith("A"))
.OrderBy(s => s.Age)
.Select(s => s.Name);
这条链式调用读起来就像自然语言:“筛选名字以A开头的,按年龄排序,选出姓名”。
再比如分组统计:
var grouped = students.GroupBy(s => s.Age)
.Select(g => new { Age = g.Key, Count = g.Count() });
这会按年龄分组,并生成一个匿名类型,包含年龄和对应人数。
LINQ查询默认是“延迟执行”的,意思是定义查询时不会立刻运行,只有在遍历结果(如foreach、ToList()、Count())时才真正执行。
例如:
var query = students.Where(s => s.Age == 20); // 此时未执行
students.Add(new Student { Name = "Diana", Age = 20 }); // 后续添加的数据也会被包含
foreach (var s in query) { Console.WriteLine(s.Name); } // 这里才执行
如果你想立即执行并固定结果,可以用 ToList() 或 ToArray():
var list = students.Where(s => s.Age == 20).ToList(); // 立即执行并生成新列表
以上就是C#中的LINQ是什么?最实用的LINQ查询语法与Lambda表达式入门指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号