请说明在 C# 中利用 LINQ 对集合执行筛选与投影的具体做法,并简述其原理。
考察说明
考查对 LINQ 查询语法与方法语法在过滤和投影方面的掌握程度。
回答思路
- 【回答框架 1】LINQ 是 C# 中用于数据查询的语言集成查询,通过扩展方法和表达式树实现。筛选使用 Where 操作,接受 Func<T,bool> 谓词,返回满足条件的元素序列。
- 【回答框架 2】投影使用 Select 操作,将每个元素转换为新形式,如匿名类型或自定义对象。还可以使用 SelectMany 进行扁平化投影。
- 【回答框架 3】查询表达式语法(from...where...select)在编译时转换为方法调用,二者等价。查询延迟执行,仅在枚举时执行。
- 【回答框架 4】常见用法:var result = collection.Where(x => x.Age > 18).Select(x => new { x.Name, x.Age }); 注意区分延迟执行与立即执行(ToArray等)。
- 【关键点 1】Where 用于过滤,Select 用于投影。
- 【关键点 2】查询表达式与方法语法等价。
- 【关键点 3】LINQ 默认延迟执行,立即执行需调用 ToList 等方法。
- 【关键点 4】Select 可返回匿名类型实现所需字段投影。
- 【易错点 1】误以为 LINQ 查询会立即执行,实际是延迟执行。
- 【易错点 2】忽略空集合或异常处理,筛选条件可能抛异常。