using System.Collections.Generic;
using System.Globalization;
public static void Main()
Console.WriteLine("Comparar duas listas distintas V1");
Console.WriteLine("Fonte: ");
Console.WriteLine("https://stackoverflow.com/questions/37397020/comparing-two-lists-with-multiple-conditions");
var pre1 = new List<pre>()
new pre {id = 1, date = DateTime.Parse("24/01/2013", new CultureInfo("pt-BR")), sID = 1 , qt = 10 },
new pre {id = 7, date = DateTime.Parse("24/01/2011", new CultureInfo("pt-BR")), sID = 2 , qt = 20 },
new pre {id = 9, date = DateTime.Parse("24/01/2014", new CultureInfo("pt-BR")), sID = 3 , qt = 10 },
new pre {id = 13, date = DateTime.Parse("24/01/2012", new CultureInfo("pt-BR")), sID = 4 , qt = 10 },
new pre {id = 14, date = DateTime.Parse("24/01/2012", new CultureInfo("pt-BR")), sID = 3 , qt = 40 },
var pre2 = new List<pre>()
new pre {id = 1, date = DateTime.Parse("24/01/2013", new CultureInfo("pt-BR")), sID = 1 , qt = 10 },
new pre {id = 8, date = DateTime.Parse("24/01/2011", new CultureInfo("pt-BR")), sID = 7 , qt = 10 },
new pre {id = 11, date = DateTime.Parse("24/01/2014", new CultureInfo("pt-BR")), sID = 10 , qt = 10 },
new pre {id = 14, date = DateTime.Parse("24/01/2012", new CultureInfo("pt-BR")), sID = 3 , qt = 10 },
new pre {id = 7, date = DateTime.Parse("24/01/2011", new CultureInfo("pt-BR")), sID = 2 , qt = 10 },
var preIguais = pre1.Where(p1 => pre2.Any (
Console.WriteLine("Iguais Qtde: " + preIguais.Count());
foreach ( pre p in preIguais){
Console.WriteLine(p.ParaString());
var preDif = pre1.Where(p1 => !pre2.Any (
Console.WriteLine("Diferentes Qtde: " + preDif.Count());
foreach ( pre p in preDif){
Console.WriteLine(p.ParaString());
var t1 = pre1.Where(p1 => pre2.Any (
Console.WriteLine("T1: " + t1.Count());
Console.WriteLine(p.ParaString());
public int id {get; set;}
public DateTime date {get; set;}
public int sID {get; set;}
public long qt {get; set;}
public string ParaString(){
s = id.ToString() + ", " + date.ToShortDateString() + ", " + sID.ToString();