using System.Collections.Generic;
public int Id { get; set; }
public int Number { get; set; }
public int ContactId { get; set; }
public static void Main()
var data = new List<Test>
new Test { Id = 1, Number = 1234, ContactId = 5 },
new Test { Id = 2, Number = 9873, ContactId = 6 },
new Test { Id = 3, Number = 1234, ContactId = 7 },
new Test { Id = 4, Number = 9873, ContactId = 6 },
var results = data.GroupBy(number => number.Number)
.Where(number => number.Count() > 1)
Count = number.GroupBy(contactId => contactId.ContactId).Count(x => x.Count() == 1)
.Where(x => x.Count > 0).ToList();
foreach(var item in results)
Console.WriteLine("Number: {0}, Count: {1}", item.Number, item.Count);