首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合Dictionary<A、B> + Dictionary<B、C>创建Dictionary<A、C>

结合Dictionary<A、B> + Dictionary<B、C>创建Dictionary<A、C>
EN

Stack Overflow用户
提问于 2011-03-23 22:04:18
回答 7查看 375关注 0票数 2

有什么很酷的快速方法可以用两个字典来创建第三个字典,以内部连接的方式将第一个字典的键映射到第二个字典的值?

代码语言:javascript
复制
Dictionary<A,B> dic1 = new Dictionary<A,B> {{a1,b1},{a2,b2},{a3,b3}};
Dictionary<B,C> dic2 = new Dictionary<B,C> {{b1,c1},{b2,c2},{b4,c4}};

Dictionary<A,C> dic3 = SomeFunction(dic1,dic2);
// dic3 = {{a1,c1},{a2,c2}}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-03-23 22:15:06

您可以这样做来连接内部值

代码语言:javascript
复制
Dictionary<int, string> first = new Dictionary<int, string> { {1, "hello"}, {2, "world"}};

Dictionary<string, bool> second = 
    new Dictionary<string, bool> { { "hello", true }, {"world", false}};

var result = (from f in first
              join s in second on f.Value equals s.Key
              select new { f.Key, s.Value }).ToDictionary(x => x.Key, y => y.Value);

如果将结果转储出去,您将看到它是一个值为{1: true, 2: false}的字典

票数 5
EN

Stack Overflow用户

发布于 2011-03-23 22:16:11

试试这个-

代码语言:javascript
复制
Dictionary<string, string> a, b, c;

//code to initialize the 3 dictionaries. a,b are original dictionaries and c is the new dictionary

c = ( from ak in a.Keys
    where b.ContainsKey( ak )
    select new KeyValuePair<string, string>( ak, b[ ak ] ) ).ToDictionary( d => d.Key, d=> d.Value );
票数 3
EN

Stack Overflow用户

发布于 2011-03-23 22:08:25

代码语言:javascript
复制
public Dictionary<A,C> SomeFunction(dic1, dic2)
{
    var dic3 = new Dictionary<A,C>();
    foreach (var item in dic1)
    { 
         var item2 = dic2.Where(m=>m.Key == item.Value).FirstOrDefault(); 
         if (item2 != null) 
         {
             dic3.Add(item.Key, item2.Value);
         } 
    }
    return dic3
}

我相信这能满足你的需要

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5406433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档