ReSharper搜索模式.First([With condition])忽略.First()

时间:2013-07-05 02:56:08

标签: c# performance linq resharper structural-search

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

此搜索的动机是回答问题 Why is LINQ .Where(predicate).First() faster than .First(predicate)?

我们希望看到我们在条件下使用First()的次数。搜索将扩展为查找.FirstOrDefault()。

2 个答案:

答案 0 :(得分:2)

您可以按照预期的方式为此创建模式。转到ReSharper>查找>使用模式搜索,然后输入此模式:

$enumerable$.First($args$)

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

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

我对此进行了测试,但它找到了list.First(i => i%2 == 0)但未找到list.First(),所以看起来就像你要求的那样。

答案 1 :(得分:1)

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

类似于:.First(\({.+}\));

enter image description here

您还可以使用“查找和替换”将所有谓词更改为Where + First`

enter image description here