public void BuscarTelefonosDuplicadosEnTodosLosAlumnos() { Alumno local1 = new AlumnoLocal(Legajo.Of("123"), "Lisandro", "Martinez", new DateTime(2019, 1, 1)); Alumno local2 = new AlumnoLocal(Legajo.Of("1233"), "Pedro", "Martinez", new DateTime(2019, 1, 1)); Alumno local3 = new AlumnoLocal(Legajo.Of("12344"), "Juan", "Martinez", new DateTime(2019, 1, 1)); var tel1 = Telefono.Of("011", "1234"); var tel2 = Telefono.Of("012", "43123"); local1.AgregarTelefono(tel1); local2.AgregarTelefono(tel2); local3.AgregarTelefono(tel1); List <Alumno> alumnos = new List <Alumno>(); alumnos.Add(local1); alumnos.Add(local2); alumnos.Add(local3); //SOLO IMPORTA ESTO. //Busca en todos los telefonos de los alumnos los que tengan el mismo prefijo y numero. //Devuelve una lsita de los alumnos que cumplan con esa condicion. //Podes verificar que la lista este vacia para validarlo, si te devuelve un Count distitno de cero //podes usar los datos del alumno para tirar una excepcion. var list = alumnos.Where(alumno => alumno.Telefonos.Any(telefono => telefono.Prefijo == tel1.Prefijo && telefono.Numero == tel1.Numero)).ToList(); // list.Should().ContainInOrder(local1, local3).And.HaveCount(2); }