My suspicion is that the .IndexOf method call is returning -1 which indicates that the value was not found.
I would break down your statement for debugging purposes:
int indexOfEmail = email.IndexOf(EmployeeDataset.Tables.Rows[j]["EmailId"].ToString());
int lengthOfEmail = EmployeeDataset.Tables.Rows[j]["EmailId"].ToString().Length;
if( indexOfEmail >= 0 )
email = email.Remove(indexOfEmail, lengthOfEmail + 1);
Now run the debugger with a breakpoint set on the int indexOfEmail line and step through each line checking the values as you go. I suspect that you will find indexOfEmail = -1.