gpt4 book ai didi

c# - IEnumerable 的可能重复枚举

转载 作者:太空狗 更新时间:2023-10-29 22:27:15 26 4
gpt4 key购买 nike

我写了下面的代码:

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)));

resharper 向我显示警告:IEnumerable 的可能重复枚举

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

最佳答案

LINQ 查询推迟它们的执行,直到您对结果进行处理。在这种情况下,对同一个集合调用 Contains() 两次可能会导致结果被枚举两次,这可能会导致性能问题,具体取决于查询。

您可以通过简单地在查询末尾添加一个 ToList() 调用来解决这个问题,这将强制执行查询并一次性存储结果。

关于c# - IEnumerable 的可能重复枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975535/

26 4 0