If what you mean is:
List<list><string>> Wayfinder = new List<list><string>>();
Wayfinder.Add(new List<string> { "a", "b" });
Wayfinder.Add(new List<string> { "c", "d" });
Wayfinder.Add(new List<string> { "e", "f" });
Wayfinder.Add(new List<string> { "g", "h","i","j" });</string></string></string></string></string></list></string></list>
then you can find the union easily by using Linq:
List<string> union = new List<string>();
foreach (List<string> list in Wayfinder)
{
union.AddRange(list);
}
union = union.Distinct().OrderBy(u => u).ToList();</string></string></string>
Intersection is much the same:
List<string> intersection = Wayfinder[0];
for (int i = 1; i < Wayfinder.Count; i++)
{
intersection = intersection.Intersect(Wayfinder[i]).ToList();
}</string>
But in your example, it will be an empty list.