我需要將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。我想知道更多關於類型變化的問題,並且可能會提出另一個問題。儘管你的答案對我很好,謝謝! – 2012-03-12 12:51:08