Udostępnij za pośrednictwem


Upraszczanie wyrażenia LINQ

Ta refaktoryzacja ma zastosowanie do:

  • C#

Co: Refaktoryzuje wystąpienia SomeEnumerableType.Where(<LambdaExpression>).Single() elementu do SomeEnumerable.Single(<LambdaExpression>) , Enumerable.Single() a także następujące metody wyliczalne: SingleOrDefault(), , Last(), LastOrDefault()Any(), Count()First(), i FirstOrDefault().

Gdy: wszystkie wystąpienia, w których metoda wywołuje Single()metodę , SingleOrDefault()i tak dalej, nie ma żadnych argumentów i jest poprzedzona wyrażeniem Where() . Nie można skonstruować danych wejściowych Where() wyrażenia jako drzewa wyrażeń.

Dlaczego: Usunięcie niepotrzebnego wywołania metody Enumerable .Where() dla metody zwiększa czytelność i w niektórych przypadkach wydajność, zobacz uwagi.

Porady

  1. Umieść kursor w wystąpieniu SomeEnumerableType.Where(<LambdaExpression>).Single() w programie Visual Studio.

  2. Naciśnij klawisze Ctrl+, aby wyzwolić menu Szybkie akcje i refaktoryzacje.

  3. Wybierz pozycję Uprość wyrażenie LINQ

    Convert typeof to nameof

Uwagi

W niektórych przypadkach refaktoryzacja może zmniejszyć wydajność. Operacje LINQ na List<T> systemach i T[] nie są zoptymalizowane w tym przypadku i powodują pogorszenie wydajności.

Zobacz też