C# Resharper使用扩展方法将foreach转换为LINQ

C# Resharper使用扩展方法将foreach转换为LINQ,c#,linq,resharper,C#,Linq,Resharper,我正在使用Resharper 7,有时在编写foreach循环时,它建议我将其转换为LINQ。 问题是我找不到一个设置,在这个设置中,我可以选择使用扩展方法而不是以LINQ查询的形式创建LINQ。 我知道这应该是可能的,因为它以前在我的旧设置中是这样工作的(我不得不将它们恢复为默认设置,因为它们由于某种原因被完全破坏) 这是foreach循环: var idList= new List<string>(); foreach (var entity in entityList)

我正在使用Resharper 7,有时在编写foreach循环时,它建议我将其转换为LINQ。 问题是我找不到一个设置,在这个设置中,我可以选择使用扩展方法而不是以LINQ查询的形式创建LINQ。
我知道这应该是可能的,因为它以前在我的旧设置中是这样工作的(我不得不将它们恢复为默认设置,因为它们由于某种原因被完全破坏)

这是foreach循环:

var idList= new List<string>();
  foreach (var entity in entityList)
  {
    if(entity.EntityPathOrNull==null)
      idList.Add(entity.Identity);
  }
这就是我想要它的样子:

  var idList = entityList.Where(entity => entity.EntityPathOrNull == null).Select(entity=> entity.Identity).ToList();

问题是,有人知道这个设置的位置吗?我到处搜索,谷歌搜索,但找不到它。

这是我所知道的从查询语法转换它的唯一方法。 也许这可以成为某种标准行动。否则,您必须手动或通过快捷方式调用它


我不知道这方面的设置。如果可能的话,AFAIK R#首先转换为LINQ查询。但是,您可以再次按Alt Enter键将查询转换为LINQ方法链。我不知道使用第二个Alt+Enter键可以创建方法链。如果找不到此设置,这是一个很好的解决方法,但正如我所说的,我认为它以前默认情况下会转换为方法链,因此它可能隐藏在某个配置文件中。在using语句中是否包含System.Linq命名空间?要使用扩展方法,您需要包含这些方法。AFAIK查询语法在编译时会转换为方法语法,所以除了可读性之外,我看不出这有什么意义。
  var idList = entityList.Where(entity => entity.EntityPathOrNull == null).Select(entity=> entity.Identity).ToList();