The result set cannot be queried. It is an ISingleResult<t> which works a bit differently to IQueriable and IEnumerable.
Try adding ToList(). This will make sure that the SP has returned the data before you start iterating through it:
string st = "Adel";
dbDidDataContext db = new dbDidDataContext();
var res = db.spJobmenu(st).ToList();
foreach (var item in res)
{
Console.Write(item.name.ToString());
}
the .First() method will also cause the results to be fetched, same as ToList. That is why the example you gave works
Hope that helps ^_^
Andy