Should be something like:
bool found = false;
foreach (var row in res)
{
if (row.email != txtmail.Text)
{
found=true;
}
}
if (!found)
{
ob1.name = txtname.Text;
ob1.address = txtadd.Text;
ob1.phone_num = txtphn.Text;
ob1.stream = txtstrm.Text;
ob1.qualification = txtqlf.Text;
ob1.email = txtmail.Text;
ob1.password = txtpass.Text;
ob.User_reg.AddObject(ob1);
ob.SaveChanges();
}
else
lbl.Text = "Email Id already exists";
Otherwise you are checking every row and adding one entry for each row that doesn't match. Remember, foreach is a loop, you need to check all the rows for a duplicate and then after you've verified that there are no matches, THEN you an add it.
BTW, the loop is probably not necessary for finding if there is a duplicate email. You can use Linq for this in your select statement at the beginning, but I leave that as an exercise for you.