此重构适用于:
1、C#
功能: 可以将使用 IEnumerables 的 foreach 循环轻松转换为 LINQ 查询或 LINQ 调用窗体(也称为 LINQ 方法)。
使用时机: 有一个使用 IEnumerable 的 foreach 循环,并且需要将该循环作为 LINQ 查询读取。
操作原因:更倾向于使用 LINQ 语法而不是 foreach 循环。 LINQ 使查询成为 C# 一流语言构造。 LINQ 可以减少文件中的代码量,使代码更易于读取,并允许不同的数据源具有类似的查询表达式模式。
LINQ 语法的效率通常低于 foreach 循环。 使用 LINQ 来提高代码的可读性时,最好了解可能发生的性能权衡。
将 foreach 循环转换为 LINQ 重构
1、请将光标置于 foreach
关键字。
2、按 (Ctrl+.) 触发“快速操作和重构”菜单。
3、选择“转换为 LINQ”或“转换为 Linq (调用窗体)”。
示例代码
using System.Collections.Generic; public class Class1 { public void MyMethod() { var greetings = new List<string>() { "hi", "yo", "hello", "howdy" }; IEnumerable<string> enumerable() { foreach (var greet in greetings) { if (greet.Length < 3) { yield return greet; } } yield break; } } }