using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Birthday { get; set; }
}
public static void Main()
{
var persons = new List<Person>();
persons.Add(new Person() { FirstName="Barack", LastName="Obama"});
persons.Add(new Person() { FirstName = "Barack", LastName = "Obama" });
persons.Add(new Person() { FirstName = "Tim", LastName = "Schmelter" });
var uniquePersons = persons
.GroupBy(p => new { p.FirstName, p.LastName })
.Where(g => g.Count() == 1)
.Select(g => g.First());
foreach(var pers in uniquePersons)
Console.WriteLine("{0} {1}",pers.FirstName,pers.LastName);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBwdWJsaWMgY2xhc3MgUGVyc29uCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIEZpcnN0TmFtZSB7IGdldDsgc2V0OyB9CiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgTGFzdE5hbWUgeyBnZXQ7IHNldDsgfQogICAgICAgICAgICBwdWJsaWMgRGF0ZVRpbWUgQmlydGhkYXkgeyBnZXQ7IHNldDsgfQogICAgICAgIH0KICAgIAoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBwZXJzb25zID0gbmV3IExpc3Q8UGVyc29uPigpOwogICAgICAgICAgICBwZXJzb25zLkFkZChuZXcgUGVyc29uKCkgeyBGaXJzdE5hbWU9IkJhcmFjayIsIExhc3ROYW1lPSJPYmFtYSJ9KTsKICAgICAgICAgICAgcGVyc29ucy5BZGQobmV3IFBlcnNvbigpIHsgRmlyc3ROYW1lID0gIkJhcmFjayIsIExhc3ROYW1lID0gIk9iYW1hIiB9KTsKICAgICAgICAgICAgcGVyc29ucy5BZGQobmV3IFBlcnNvbigpIHsgRmlyc3ROYW1lID0gIlRpbSIsIExhc3ROYW1lID0gIlNjaG1lbHRlciIgfSk7CgogICAgICAgICAgICB2YXIgdW5pcXVlUGVyc29ucyA9IHBlcnNvbnMKICAgICAgICAgICAgICAgICAgICAuR3JvdXBCeShwID0+IG5ldyB7IHAuRmlyc3ROYW1lLCBwLkxhc3ROYW1lIH0pCiAgICAgICAgICAgICAgICAgICAgLldoZXJlKGcgPT4gZy5Db3VudCgpID09IDEpCiAgICAgICAgICAgICAgICAgICAgLlNlbGVjdChnID0+IGcuRmlyc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcmVhY2godmFyIHBlcnMgaW4gdW5pcXVlUGVyc29ucykKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gezF9IixwZXJzLkZpcnN0TmFtZSxwZXJzLkxhc3ROYW1lKTsKCX0KfQ==