Я написал следующий код C #:
_locationsByRegion = new Dictionary<string, IEnumerable<string>>();
foreach (string regionId in regionIds)
{
IEnumerable<string> locationIds = Locations
.Where(location => location.regionId.ToUpper() == regionId.ToUpper())
.Select(location => location.LocationId); //If I cast to an array here, it works.
_locationsByRegion.Add(regionId, LocationIdsIds);
}
Этот код предназначен для создания словаря с моими "идентификаторами регионов" в качестве ключей и списками "идентификаторов местоположений" в качестве значений.
Однако в действительности получается, что я получаю словарь с «идентификаторами регионов» в качестве ключей, но значение для каждого ключа идентично: это список местоположений для последнего идентификатора региона в regionIds!
Похоже, это результат оценки лямбда-выражений.Я могу получить правильный результат, приведя список идентификаторов местоположений к массиву, но это похоже на кучу.
Что такое хорошая практика для обработки этой ситуации?