using System.Collections.Generic;
public static void Main()
var list = new List<LoginInfoDto>();
list.Add(new LoginInfoDto{Domain = "x1", Login = "y1"});
list.Add(new LoginInfoDto{Domain = "x1", Login = "y2"});
list.Add(new LoginInfoDto{Domain = "x1", Login = "y1"});
list.Add(new LoginInfoDto{Domain = "x1", Login = "Y1"});
list.Add(new LoginInfoDto{Domain = "x2", Login = "y3"});
list.Add(new LoginInfoDto{Domain = "x2", Login = "y3"});
list.Add(new LoginInfoDto{Domain = "x2", Login = "y4"});
list.Add(new LoginInfoDto{Domain = "X2", Login = "y4"});
list.Add(new LoginInfoDto{Domain = "x2", Login = "Y4"});
list.Add(new LoginInfoDto{Domain = "Y2", Login = "Y4"});
list.Add(new LoginInfoDto{Domain = "Y2", Login = "Y4"});
list = list.GroupBy(x => (x.Domain, x.Login)).Select(x => x.First()).ToList();
Console.WriteLine($"Total:{list.Count}");
for (var i = 0; i < list.Count; i++)
Console.WriteLine($"{i+1}|{list[i]}");
public class LoginInfoDto
public string Domain { get; set; }
public string Login { get; set; }
public override string ToString()
return $"{Domain} - {Login}";