Мне нужно передать переменную типа IDictionary<Guid, IEnumerable<Guid>>
в метод. Когда я использую следующий код:Использование Linq для объектов, метод ToDictionary, не удовлетворяющий требованиям типа
var userGroupDictionary = _selectedUsers.ToDictionary(u => u.UserGuid, u => u.GroupUsers.Select(gu => gu.Group.GroupGuid).ToList());
Я получаю следующее сообщение об ошибке:
cannot convert from System.Collections.Generic.Dictionary<System.Guid,System.Collections.Generic.List<System.Guid>>' to 'System.Collections.Generic.IDictionary<System.Guid,System.Collections.Generic.IEnumerable<System.Guid>>'
Когда я перебирать свою коллекцию он работает, однако:
var userGroupDictionary = new Dictionary<Guid, IEnumerable<Guid>>();
foreach (var user in _selectedUsers.Where(user => !userGroupDictionary.ContainsKey(user.UserGuid)))
{
userGroupDictionary.Add(user.UserGuid, user.GroupUsers.Select(gu => gu.Group.GroupGuid).ToList());
}
Любые идеи, что происходит? Является ли компилятор не может сказать, что Dictionary<Guid, List<Guid>>
удовлетворяет IDictionary<Guid, IEnumerable<Guid>>
Да, у меня возникали проблемы с отложенным исполнением. После оценки я бы не подумал об AsEnumerable. Я хотел бы узнать больше о проблеме дисперсии типа, хотя и, скорее всего, поставит другой вопрос. Ваш ответ отлично работает для меня, благодарю вас! –