简化 LINQ 表达式

此重构适用于:

  • C#

功能: 用于 Enumerable.Single()SomeEnumerable.Single(<LambdaExpression>)SomeEnumerableType.Where(<LambdaExpression>).Single() 重构实例,以及以下 Enumerable 方法:SingleOrDefault()Last()LastOrDefault()Any()Count()First()FirstOrDefault()

使用时机:方法调用 Single()SingleOrDefault() 等的所有实例都不具有任何参数,并且前面有一个 Where() 表达式。 Where() 表达式的输入不能构造为表达式树。

原因:删除对 .Where() 方法的 Enumerable 的不必要的调用可提高可读性,在某些情况下还可提高性能,请参阅“备注”。

操作说明

  1. 将光标置于 Visual Basic 的 SomeEnumerableType.Where(<LambdaExpression>).Single() 实例中。

  2. 按 (Ctrl+.) 触发“快速操作和重构”菜单。

  3. 选择“简化 LINQ 表达式”

    Convert typeof to nameof

注解

在某些情况下,此重构可能会降低性能。 在这种情况下,对 List<T>T[] 执行的 LINQ 操作不会优化,从而导致性能下降。

另请参阅