using System.Collections.Generic;
public static void Main()
Sessione sessione = CaricaSessione();
StampaSessione("Situazione iniziale", sessione);
RimuoviOccorrenze(sessione, 1);
StampaSessione("Dopo eliminazione prima occorrenza", sessione);
RimuoviDomande(sessione, 1, 3);
StampaSessione("Dopo rimozione di domande 1 e 3", sessione);
AggiungiDomanda(sessione, 3);
StampaSessione("Dopo riaggiunta di domanda 3", sessione);
public List<Occorrenza> Occorrenze { get; } = new List<Occorrenza>();
public class Occorrenza {
public int Numero { get; set; }
public List<Domanda> Domande { get; } = new List<Domanda>();
public int Numero { get; set; }
public int Occorrenza { get; set; }
private static void StampaSessione(string titolo, Sessione sessione) {
Console.WriteLine($"#### {titolo}");
foreach (var occorrenza in sessione.Occorrenze) {
Console.WriteLine($"\nOccorrenza{occorrenza.Numero}");
foreach (var domanda in occorrenza.Domande) {
Console.WriteLine($"\tDomanda{domanda.Numero} Occorrenza{occorrenza.Numero}");
Console.WriteLine("\n\n");
private static Sessione CaricaSessione() {
new Domanda { Numero = 1 },
new Domanda { Numero = 2 },
new Domanda { Numero = 3 }
new Domanda { Numero = 1 },
new Domanda { Numero = 2 },
new Domanda { Numero = 3 }
new Domanda { Numero = 1 },
new Domanda { Numero = 2 },
new Domanda { Numero = 3 }
private static void RimuoviDomande(Sessione sessione, params int[] numeriDomande) {
foreach (var occorrenza in sessione.Occorrenze) {
occorrenza.Domande.RemoveAll(domanda => numeriDomande.Contains(domanda.Numero));
private static void AggiungiDomanda(Sessione sessione, int numeroDomanda) {
foreach (var occorrenza in sessione.Occorrenze) {
occorrenza.Domande.Add(new Domanda { Numero = numeroDomanda });
private static void RimuoviOccorrenze(Sessione sessione, params int[] numeriOccorrenze) {
sessione.Occorrenze.RemoveAll(occorrenza => numeriOccorrenze.Contains(occorrenza.Numero));
RinumeraOccorrenze(sessione);
private static void RinumeraOccorrenze(Sessione sessione) {
int numeroOccorrenza = 1;
foreach (var occorrenza in sessione.Occorrenze) {
occorrenza.Numero = numeroOccorrenza++;