using System.Collections.Generic;
using System.Threading.Tasks;
public string Name {get;set;}
public Guid Id {get;set;}
public TstOb(Guid? id = null, string name = null)
this.Name = name ?? "new guy";
this.Id = id ?? Guid.NewGuid();
public static void Main()
Console.WriteLine("Hello World\n");
var obList1 = new List<TstOb>();
var obList2 = new List<TstOb>();
obList1.Add(new TstOb(Guid.Empty));
obList2.Add(new TstOb(Guid.Empty, "Mr. Dude"));
obList1.Add(new TstOb());
obList2.Add(new TstOb());
obList2.Add(new TstOb());
var totalList = obList1.Union(obList2);
finalList = (from v in obList2.Union(obList1)
select grp.FirstOrDefault()).ToList();
var almostfinalList = obList1.Where(o => !(obList2.Any(oo => oo.Id == o.Id))).ToList();
var finalList2 = obList2.Union(almostfinalList).ToList();
Console.WriteLine("obList1 contents:\n");
foreach(var ob in obList1){
Console.WriteLine("name: '"+ob.Name+"' || id: '"+ob.Id+"'\n");
Console.WriteLine("obList2 contents:\n");
foreach(var ob in obList2){
Console.WriteLine("name: '"+ob.Name+"' || id: '"+ob.Id+"'\n");
Console.WriteLine("totalList contents:\n");
foreach(var ob in totalList){
Console.WriteLine("name: '"+ob.Name+"' || id: '"+ob.Id+"'\n");
Console.WriteLine("finalList contents:\n");
foreach(var ob in finalList){
Console.WriteLine("name: '"+ob.Name+"' || id: '"+ob.Id+"'\n");
Console.WriteLine("finalList v2 contents:\n");
foreach(var ob in finalList2){
Console.WriteLine("name: '"+ob.Name+"' || id: '"+ob.Id+"'\n");