```
public ICollection<ContactNumber> ContactNumbers
{
    get
    {
        List<ContactNumber> list = new List<ContactNumber>();

        if (Contact != null)
        {
            if (Contact.Qualifier1 != null || Contact.Number1 != null)
                list.Add(new ContactNumber { Qualifier = Contact.Qualifier1, Number = Contact.Number1 });
            if (Contact.Qualifier2 != null || Contact.Number2 != null)
                list.Add(new ContactNumber { Qualifier = Contact.Qualifier2, Number = Contact.Number2 });
            if (Contact.Qualifier3 != null || Contact.Number3 != null)
                list.Add(new ContactNumber { Qualifier = Contact.Qualifier3, Number = Contact.Number3 });

        }
        return list;
    }
    set
    {
        for (int i = 0; i < value.Count; i++)
        {
            ContactNumber cn = value.ElementAt(i);
            switch (i)
            {
                case 0:
                    Contact.Qualifier1 = cn.Qualifier;
                    Contact.Number1 = cn.Number;
                    break;
                case 1:
                    Contact.Qualifier2 = cn.Qualifier;
                    Contact.Number2 = cn.Number;
                    break;
                case 2:
                    Contact.Qualifier3 = cn.Qualifier;
                    Contact.Number3 = cn.Number;
                    break;

                default:
                    // Should never reach here
                    //TODO: Handle ToManyContactNumbersException
                    break;
            }
        }
    }

```

}

```
public class ContactNumber
{
    public string Qualifier { get; set; }
    public string Number { get; set; }
}

ContactNumber adj = this.ContactNumbers.ElementAt(1);
ContactNumber itemToRemove = this._billingProvider.ContactNumbers.SingleOrDefault(i => (i.Number == adj.Number) && (i.Qualifier == adj.Qualifier));
foreach (ContactNumber cn in this._billingProvider.ContactNumbers)
{
    if ((cn.Number == itemToRemove.Number) && (cn.Qualifier == itemToRemove.Qualifier))
        this.ContactNumbers.Remove(cn);
}

```

Why isn't the element being removed from the list. Even before Remove it has 3 items and the same after removing it

EDIT 1: 

```
    public partial class BillingProvider
    {
     private List<ContactNumber> list = new List<ContactNumber>();
       public ICollection<ContactNumber> ContactNumbers
            {

                get
                {
                    return list;
                }
                set
                {
                    for (int i = 0; i < value.Count; i++)
                    {
                        ContactNumber cn = value.ElementAt(i);
                        switch (i)
                        {
                            case 0:
                                Contact.Qualifier1 = cn.Qualifier;
                                Contact.Number1 = cn.Number;
                                break;
                            case 1:
                                Contact.Qualifier2 = cn.Qualifier;
                                Contact.Number2 = cn.Number;
                                break;
                            case 2:
                                Contact.Qualifier3 = cn.Qualifier;
                                Contact.Number3 = cn.Number;
                                break;
                            case 3:
                                Contact.Qualifier4 = cn.Qualifier;
                                Contact.Number4 = cn.Number;
                                break;
                            case 4:
                                Contact.Qualifier5 = cn.Qualifier;
                                Contact.Number5 = cn.Number;
                                break;
                            case 5:
                                Contact.Qualifier6 = cn.Qualifier;
                                Contact.Number6 = cn.Number;
                                break;
                            default:
                                // Should never reach here
                                //TODO: Handle ToManyContactNumbersException
                                break;
                        }
                    }
                }
            }
       public void InitializeContactNumbersList()
            {
                if (Contact != null)
                {

                    if (Contact.Qualifier1 != null || Contact.Number1 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier1, Number = Contact.Number1 });
                    if (Contact.Qualifier2 != null || Contact.Number2 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier2, Number = Contact.Number2 });
                    if (Contact.Qualifier3 != null || Contact.Number3 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier3, Number = Contact.Number3 });
                    if (Contact.Qualifier4 != null || Contact.Number4 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier4, Number = Contact.Number4 });
                    if (Contact.Qualifier5 != null || Contact.Number5 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier5, Number = Contact.Number5 });
                    if (Contact.Qualifier6 != null || Contact.Number6 != null)
                        list.Add(new ContactNumber { Qualifier = Contact.Qualifier6, Number = Contact.Number6 });
                }
            }
    }

private void BillingProvider_Load(object sender, EventArgs e)
{
   _billingProvider.InitializeContactNumbersList();
Bindignsource1.datasourece = _billingProvider.ContactNumbers
}
   private void menuDelete_Click(object sender, System.EventArgs e)
        {

            ContactNumber adj = this._billingProvider.ContactNumbers.ElementAt(focussedRow);
            ContactNumber itemToRemove = this._billingProvider.ContactNumbers.SingleOrDefault(i => (i.Number == adj.Number) && (i.Qualifier == adj.Qualifier));
            this._billingProvider.ContactNumbers.Remove(itemToRemove);
           iscontrolDirty=true;
        }

```

Thank you