转换字典<int,列出<用户>>

Dav*_*New 3 .net c# ienumerable dictionary casting

投射Dictionary<int, List<User>>到一个最有效的方法是Dictionary<int, IEnumerable<User>>什么?

这样做的原因是我有一个构建a的方法,Dictionary<int, List<User>>但我不想将mutable返回List给调用代码.

我是否必须将此词典投射到新类型中?

Gui*_*ira 5

你可以这样做:

var userDictionary = new Dictionary<int, List<User>>();
IDictionary<int, IEnumerable<User>> newDictionary = userDictionary.ToDictionary(p => p.Key, p => p.Value.AsEnumerable());
Run Code Online (Sandbox Code Playgroud)

  • `p.Value.AsEnumerable()`将不涉及任何成本,因为它返回对原始列表的引用.复制数百个键的字典不会花费太多时间.我只是在0.05秒内复制了一个包含1000000个条目的字典. (2认同)