可能重复枚举IEnumerable

Ela*_*nda 5 c# linq resharper

我写了以下代码:

IEnumerable<string> blackListCountriesCodes = 
pair.Criterion.CountriesExceptions.Select(countryItem => countryItem.CountryCode);

IEnumerable<string> whiteListCountriesCodes = 
pair.Criterion.Countries.Select(countryItem => countryItem.CountryCode);

return (!blackListCountriesCodes.Contains(Consts.ALL.ToString()) &&
        !blackListCountriesCodes.Contains(country) &&
        (whiteListCountriesCodes.Contains(Consts.ALL.ToString()) ||
        whiteListCountriesCodes.Contains(country)));
Run Code Online (Sandbox Code Playgroud)

resharper给我一个警告: Possible duplicate enumeration of IEnumerable

这是什么意思?为什么这是一个警告?

Jus*_*ner 8

LINQ查询推迟执行,直到您对结果执行某些操作.在这种情况下,Contains()对同一个集合调用两次可能会导致结果被枚举两次,这取决于查询,可能会导致性能问题.

您可以通过简单地ToList()在查询结尾处执行调用来解决此问题,该调用将强制执行查询并将结果存储一次.