0

0

C#中的LINQ是什么?最实用的LINQ查询语法与Lambda表达式入门指南

幻夢星雲

幻夢星雲

发布时间:2025-11-27 18:20:03

|

225人浏览过

|

来源于php中文网

原创

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

c#中的linq是什么?最实用的linq查询语法与lambda表达式入门指南

LINQ(Language Integrated Query)是C#中用于查询数据的强大功能,它将查询能力直接集成到语言中,让你可以用类似SQL的语法或Lambda表达式来操作集合、数据库、XML等多种数据源。最常见的是对数组、列表等集合进行筛选、排序、分组等操作,代码更清晰,开发效率更高。

1. LINQ的基本查询语法:像写SQL一样操作数据

LINQ提供了两种主要语法风格:查询语法和方法语法。查询语法看起来更像SQL,适合初学者快速上手。

假设你有一个学生列表:

var students = new List
{
    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的,然后返回这些对象。

2. 方法语法与Lambda表达式:更简洁灵活的写法

LINQ方法语法结合Lambda表达式是更常用的方式,尤其在链式调用中非常高效。

上面的例子用方法语法可以写成:

var result = students.Where(s => s.Age == 20);

s => s.Age == 20 就是一个Lambda表达式,意思是“输入s,返回s.Age是否等于20”。这种写法更紧凑,也更容易与其他操作组合。

常见的LINQ方法包括:

Rationale
Rationale

Rationale 是一款可帮助企业主、经理和个人做出艰难的决定的AI工具

下载
  • Where:过滤数据(如 .Where(x => x.Age > 18))
  • Select:投影转换(如 .Select(x => x.Name) 只取名字)
  • OrderBy / OrderByDescending:排序
  • GroupBy:按条件分组
  • Any / All:判断是否存在或全部满足条件
  • First / FirstOrDefault:取第一个元素(或默认值)
  • Count:统计数量

3. 实用组合示例:真实场景中的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() });

这会按年龄分组,并生成一个匿名类型,包含年龄和对应人数。

4. 延迟执行与立即执行:理解LINQ的运行机制

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(); // 立即执行并生成新列表
基本上就这些。掌握LINQ能大幅提升C#中处理数据的效率,建议从Where、Select、OrderBy这几个最常用的开始练习,配合Lambda表达式,很快就能写出干净又高效的代码。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1094

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

357

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

675

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

571

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

414

2024.04.29

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.6万人学习

C 教程
C 教程

共75课时 | 4万人学习

C++教程
C++教程

共115课时 | 12万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号