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<MyEntity>
new MyEntity { Id = 1, Number = 1234, ContactId = 5 },
new MyEntity { Id = 2, Number = 9873, ContactId = 6 },
new MyEntity { Id = 3, Number = 1234, ContactId = 7 },
new MyEntity { Id = 4, Number = 9873, ContactId = 6 },
var results = data.Where(x => data.Any(y => y.Id != x.Id && y.Number == x.Number && y.ContactId != x.ContactId))
.Select(grp => new { Number = grp.Key, Count = grp.Count() })
foreach(var item in results)
Console.WriteLine("Number: {0}, Count: {1}", item.Number, item.Count);