このリファクタリングは、以下に適用されます。
- C#
何: IEnumerable を使用する foreach ループを LINQ クエリまたは LINQ 呼び出し形式 (LINQ メソッドとも呼ばれます) に簡単に変換できます。
いつ: IEnumerable を使用する foreach ループがあり、そのループを LINQ クエリとして読み取る必要があります。
なぜでしょうか: foreach ループではなく LINQ 構文を使用することを好みます。 LINQ は、クエリを C# のファーストクラス言語コンストラクトにします。 LINQ を使用すると、ファイル内のコードの量を減らし、コードを読みやすくし、さまざまなデータ ソースが同様のクエリ式パターンを持つことができます。
注
LINQ 構文は、通常、foreach ループよりも効率が低くなります。 LINQ を使用してコードの読みやすさを向上させるときに発生する可能性のあるパフォーマンスのトレードオフに注意しておくとよいでしょう。
foreach ループを LINQ リファクタリングに変換する
foreach
キーワードにカーソルを置きます。Ctrl+. を押して、クイック アクションとリファクタリング メニューをトリガーします。
[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;
}
}
}