0

正如标题所述,有没有办法使用 ReSharper 搜索模式来查找包含条件的 .First() 的所有实例,而忽略 .First()?

此搜索的动机是回答
为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快这个问题?

我们想看看我们在条件下使用了多少次 First()。搜索将扩展到查找 .FirstOrDefault()。

4

2 回答 2

2

您为此创建了一个关于您所期望的方式的模式。转到 ReSharper > Find > Search with Pattern,然后输入此模式:

$enumerable$.First($args$)

然后在右边的占位符列表中,创建两个占位符:

  • 添加占位符 > 表达式,并将其命名为enumerable。不要指定类型(我尝试将类型指定为IEnumerable<out T>和后代,但由于某种原因未能找到任何用法;但如果您不指定类型,它可以工作)。
  • 添加占位符 > 参数,命名它args,选中“限制最小参数数量”复选框,并将数字设置为 1。

我对此进行了测试,它发现list.First(i => i%2 == 0)但没有list.First(),所以看起来正是您所要求的。

于 2013-07-05T03:31:15.583 回答
1

您可以只使用 VisualStudio 查找并使用 RegEx 选项

就像是:.First(\({.+}\));

在此处输入图像描述

您还可以使用 Find and Replace 将所有谓词更改为Where +First`

在此处输入图像描述

于 2013-07-05T03:27:51.283 回答