MST

星途 面试题库

面试题:C# 中 LINQ 的延迟执行与立即执行

请解释在 C# 的 LINQ 中,延迟执行和立即执行的概念及区别。分别列举一个使用延迟执行和立即执行的 LINQ 方法,并说明它们的执行时机。
41.1万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

延迟执行

  • 概念:延迟执行意味着 LINQ 查询表达式不会在定义时立即执行,而是在实际枚举结果时才执行。这允许对查询进行优化,因为只有在真正需要数据时才会进行计算。
  • 区别:与立即执行相比,延迟执行不会立刻产生结果,而是构建一个查询计划,直到有需要时才执行。
  • 示例方法Where 方法。例如:var query = numbers.Where(n => n > 5); 这里只是定义了查询,并未实际执行。当使用 foreach 循环遍历 query 时,如 foreach (var num in query) { /* 执行操作 */ },查询才会执行,即 Where 条件会在此时应用到 numbers 集合的每个元素上。

立即执行

  • 概念:立即执行的 LINQ 方法会在调用时立即对查询进行求值并返回结果。
  • 区别:立即执行会马上计算出最终结果,与延迟执行的构建查询计划等待枚举不同。
  • 示例方法ToList 方法。例如:var list = numbers.Where(n => n > 5).ToList(); 当执行到 ToList 时,Where 子句的筛选操作会立即执行,并将符合条件的元素收集到一个新的 List<T> 中返回。