LINQ 式の簡略化
このリファクタリングは以下に適用されます。
- C#
概要:Enumerable.Single()
と Enumerable メソッド (SingleOrDefault()
、Last()
、LastOrDefault()
、Any()
、Count()
、First()
、FirstOrDefault()
) に対して SomeEnumerableType.Where(<LambdaExpression>).Single()
インスタンスを SomeEnumerable.Single(<LambdaExpression>)
にリファクタリングします。
条件: メソッドで Single()
や SingleOrDefault()
が呼び出されていて、メソッドに引数がなく、メソッドの前に Where()
式がある、すべてのインスタンス。 Where()
式への入力は式ツリーとして構築できません。
理由: .Where()
メソッドの Enumerable への不要な呼び出しを削除することで、読みやすさと、場合によってはパフォーマンスが向上します (注釈を参照してください)。
方法
Visual Basic の
SomeEnumerableType.Where(<LambdaExpression>).Single()
インスタンスの中にカーソルを置きます。Ctrl+. キーを押して、[クイック アクションとリファクタリング] メニューをトリガーします。
[LINQ 式の簡略化] を選択します
解説
場合によっては、このリファクタリングによってパフォーマンスが低下することがあります。 この場合、List<T>
と T[]
に対する LINQ 操作は最適化されず、結果的にパフォーマンスが低下します。