如何将查找作为2个旧查找的联合?

myW*_*SON 10 .net c# linq

如何从2个旧查找联盟中查找?似乎a = a.Union(b)不适合他们.

rec*_*ive 15

如果您拥有查找来自的原始列表,则可能更容易.如果使用Dictionarys Lists而不是查找,也可能更容易.但是,仍然可以将两个查找对象合并为一个新对象.基本思想是从查找中检索原始值,然后从两者的连接集中创建新的查找.

var a = new[] {"apple","aardvark","barn"};
var b = new[] {"baboon", "candy", "cork"};

var al = a.ToLookup (x => x[0]);
var bl = b.ToLookup (x => x[0]);

var cl = al.Concat(bl).SelectMany(x => x).ToLookup(x => x[0]);
Run Code Online (Sandbox Code Playgroud)

如果您还不知道原始键选择器功能,则可以使用此变体.

var cl = al.Concat(bl)
    .SelectMany(lookup => lookup.Select(value => new { lookup.Key, value}))
    .ToLookup(x => x.Key, x => x.value);
Run Code Online (Sandbox Code Playgroud)