2つの集合の差を求めます
6835 ワード
/// <summary>
/// 2
/// </summary>
public class wage
{
public static void Test()
{
List<wage> list1 = new List<wage>
{
new wage { Id = 1, Name = "list1" },
new wage { Id = 2, Name = "list1" },
new wage { Id = 3, Name = "list1" },
new wage { Id = 5, Name = "list1" },
new wage { Id = 6, Name = "list1" }
};
List<wage> list2 = new List<wage>
{
new wage { Id = 1, Name = "list2", },
new wage { Id = 2, Name = "list2", },
new wage { Id = 3, Name = "list2", },
new wage { Id = 4, Name = "list2", },
new wage { Id = 5, Name = "list2", }
};
////var union = list1.Union(list2, new MyComparer()).ToList();
////var intersect = list1.Intersect(list2, new MyComparer()).ToList();
////var except = union.Except(intersect, new MyComparer()).ToList();
var result = list1.Union(list2, new MyComparer()).Except(list1.Intersect(list2, new MyComparer()), new MyComparer());
foreach (var item in result)
{
Console.WriteLine("id = {0}, name = {1}", item.Id, item.Name);
}
}
public int Id { set; get; }
public string Name { set; get; }
public class MyComparer : IEqualityComparer<wage>
{
public bool Equals(wage x, wage y)
{
return x.Id == y.Id;
}
public int GetHashCode(wage obj)
{
return obj.Id;
}
}
}