using System.Collections.Generic;
public static void Main()
var fooLIst = new List<FooBar>
var myNewListUsingSelect = fooLIst.Select(fb => new FooBar{Name = fb.Name,Tags = new List<string>()}).ToList();
myNewListUsingSelect = new List<FooBar>
var concatTest = fooLIst.Concat(myNewListUsingSelect).ToList();
var groupbyTest = fooLIst.Concat(myNewListUsingSelect).GroupBy(a=>a.Name).ToList();
var merged = new List<FooBar>(fooLIst);
merged.AddRange(myNewListUsingSelect.Where(p2 => fooLIst.All(p1 => p1.Name != p2.Name)));
Console.WriteLine("original name and tags: " + fooLIst[0].Name + " - " + fooLIst[0].Tags.Count + " - " + fooLIst[1].Name + " - " + fooLIst[1].Tags.Count + " - " + fooLIst[2].Name + " - " + fooLIst[2].Tags.Count);
Console.WriteLine("select list 2 name and tags: " + myNewListUsingSelect[0].Name + " - " + myNewListUsingSelect[0].Tags.Count + " - " + myNewListUsingSelect[1].Name + " - " + myNewListUsingSelect[1].Tags.Count + " - " + myNewListUsingSelect[2].Name + " - " + myNewListUsingSelect[2].Tags.Count);
Console.WriteLine("Concat of the two objects: " + concatTest[0].Name + " - " + concatTest[0].Tags.Count + " - " + concatTest[1].Name + " - " + concatTest[1].Tags.Count + " - " + concatTest[2].Name + " - " + concatTest[2].Tags.Count + " - " + concatTest[3].Name + " - " + concatTest[3].Tags.Count + " - " + concatTest[4].Name + " - " + concatTest[4].Tags.Count + " - " + concatTest[5].Name + " - " + concatTest[5].Tags.Count);
Console.WriteLine("AddRange of the two objects: " + merged[0].Name + " - " + merged[0].Tags.Count + " - " + merged[1].Name + " - " + merged[1].Tags.Count + " - " + merged[2].Name + " - " + merged[2].Tags.Count);
public string Name {get; set;}
public List<string> Tags {get; set;}