using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
List<string> sourceNames = new List<string>() { "A", "B", "C", "A", "B", "C" };
List<string> targetNames = new List<string>() { "Z", "Y", "X", "W", "V", "U" };
var lookup = sourceNames
.Select((Source, i) => new { Target = targetNames.ElementAt(i), Source})
.GroupBy(x => x.Source)
.ToDictionary(g => g.Key, g => g.Select(x => x.Target));
foreach(var kv in lookup)
Console.WriteLine("{0} has destinations {1}"
, kv.Key
, string.Join(",", lookup[kv.Key].ToArray()));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CglMaXN0PHN0cmluZz4gc291cmNlTmFtZXMgPSBuZXcgTGlzdDxzdHJpbmc+KCkgeyAiQSIsICJCIiwgIkMiLCAiQSIsICJCIiwgIkMiIH07CglMaXN0PHN0cmluZz4gdGFyZ2V0TmFtZXMgPSBuZXcgTGlzdDxzdHJpbmc+KCkgeyAiWiIsICJZIiwgIlgiLCAiVyIsICJWIiwgIlUiIH07CgkKCXZhciBsb29rdXAgPSBzb3VyY2VOYW1lcwoJICAgLlNlbGVjdCgoU291cmNlLCBpKSA9PiBuZXcgeyBUYXJnZXQgPSB0YXJnZXROYW1lcy5FbGVtZW50QXQoaSksIFNvdXJjZX0pCgkgICAuR3JvdXBCeSh4ID0+IHguU291cmNlKQoJICAgLlRvRGljdGlvbmFyeShnID0+IGcuS2V5LCBnID0+IGcuU2VsZWN0KHggPT4geC5UYXJnZXQpKTsKCQoJZm9yZWFjaCh2YXIga3YgaW4gbG9va3VwKQoJCUNvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gaGFzIGRlc3RpbmF0aW9ucyB7MX0iCgkJLCBrdi5LZXkKCQksIHN0cmluZy5Kb2luKCIsIiwgbG9va3VwW2t2LktleV0uVG9BcnJheSgpKSk7Cgl9Cn0=