This one would be another short approach for this question:
var summary =
(from r in records
group r by r.EntryID into results
select new
{
Name = results.Where(a => a.ColID == 1).Select(a=>a.ColValueText).SingleOrDefault(),
Phone = results.Where(a => a.ColID == 2).Select(a=>a.ColValueNum ).SingleOrDefault(),
City = results.Where(a => a.ColID == 3).Select(a=>a.ColValueText).SingleOrDefault(),
Email = results.Where(a => a.ColID == 4).Select(a=>a.ColValueText).SingleOrDefault()
}
).ToList();