このリファクタリングは以下に適用されます。
- 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 操作は最適化されず、結果的にパフォーマンスが低下します。