【问题标题】:How do I convert a Dictionary to a Lookup? [duplicate]如何将字典转换为查找? [复制]
【发布时间】:2012-05-03 03:33:54
【问题描述】:

我有一个带有签名的字典:Dictionary<int, List<string>>。我想将其转换为带有签名的查找:Lookup<int, string>

我试过了:

Lookup<int, string> loginGroups = mapADToRole.ToLookup(ad => ad.Value, ad => ad.Key);

但这并不好用。

【问题讨论】:

    标签: c# .net list dictionary lookup


    【解决方案1】:

    你可以使用:

    var lookup = dictionary.SelectMany(p => p.Value
                                             .Select(x => new { p.Key, Value = x}))
                           .ToLookup(pair => pair.Key, pair => pair.Value);
    

    (您可以使用 KeyValuePair 代替匿名类型 - 我主要是出于格式原因没有这样做。)

    这很丑陋,但它会工作。你可以替换任何代码创建字典开始吗?那可能会更干净。

    【讨论】:

    • 我想你的意思是:Select(x =&gt; new { Key = p.Key, Value = x})
    • @SaeedAmiri:不,我是说我写的。它应该可以正常工作 - 推断出 Key 属性名称。
    • 很好,我从未尝试过 :)
    • 您的代码中缺少) :)
    • @JonSkeet:出于好奇,为什么需要 Value = x?不应该自动确定吗?
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2010-12-13
    • 2019-09-27
    • 2016-10-11
    • 2020-04-11
    相关资源
    最近更新 更多