private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode == null) { _elencoMailInInvio = new ObservableCollection <MailToSend>(new List <MailToSend>()); dataGridView1.DataSource = _elencoMailInInvio; } else { var list = AppRepo.GetMailsDelJob(CurrentJobId).OrderBy(x => x.Address?.ToLower()).ToList(); var destinatari = AppSvc.GetDestinatariDelRecipienteCorrente(); list.AddRange(destinatari.Select(x => new MailToSend() { Id = Guid.NewGuid().ToString("N"), Address = x.Address, Nome = x.Nome, IdJob = CurrentJobId })); var lookup = list.ToLookup(x => x.Address?.ToLower()); lookup.Where(x => x.Count() > 1) .ToList() .ForEach(x => { foreach (var m in x.Where(ss => ss.State == null)) { list.RemoveAll(k => k.Id == m.Id); } }); _elencoMailInInvio = new ObservableCollection <MailToSend>(list); dataGridView1.DataSource = _elencoMailInInvio; } }