using System.Collections.Generic;
public int SessionId { get; set; }
public int ArticleId { get; set; }
public override bool Equals(object obj)
return obj is BuyDTO dto && SessionId == dto.SessionId && ArticleId == dto.ArticleId;
public override int GetHashCode()
int hashCode = 2118541809;
hashCode = hashCode * -1521134295 + SessionId.GetHashCode();
hashCode = hashCode * -1521134295 + ArticleId.GetHashCode();
public static void Main()
var samples = new List<BuyDTO>
new BuyDTO { SessionId = 0, ArticleId = 0 },
new BuyDTO { SessionId = 1, ArticleId = 1 },
new BuyDTO { SessionId = 2, ArticleId = 2 },
new BuyDTO { SessionId = 3, ArticleId = 3 },
new BuyDTO { SessionId = 3, ArticleId = 3 }
Console.WriteLine("first pass");
Console.WriteLine("dto (articleId: {0}, sessionId: {1})", e.ArticleId, e.SessionId);
Console.WriteLine("second pass");
result = result.Distinct();;
Console.WriteLine("dto (articleId: {0}, sessionId: {1})", e.ArticleId, e.SessionId);