怎么将Linq(EF)级联查询的结果转换为泛型集合类型

如何将Linq(EF)级联查询的结果转换为泛型集合类型
            var contacts = from c in db.Contact
                                                     join p in db.ContactGroup
                           on c.GroupId equals p.Id
                           select new
                           {
                               c.Id,
                               c.Name,
                               c.Phone,
                               c.Email,
                               c.GroupId,
                               p.GroupName
                           };

如何将contacts转换为泛型集合: IEnumerable<MVCLearning.Models.ContactViewModel>或List<ContactViewModel> 。
下面的方法不行:
                IEnumerable<ContactViewModel> models=contacts.Cast<ContactViewModel>();
下面的代码也不行:
              IEnumerable<ContactViewModel> models= contacts.ToList<ContactViewModel>();
------解决方案--------------------
   var contacts = from c in db.Contact
                                                     join p in db.ContactGroup
                           on c.GroupId equals p.Id
                           select new ContactViewModel
                           {
                               c.Id,
                               c.Name,
                               c.Phone,
                               c.Email,
                               c.GroupId,
                               p.GroupName
                           };
------解决方案--------------------
你的问题在于 查询时用了匿名类,在ToList()转化时当然出错了
------解决方案--------------------
List<ContactViewModel> models= contacts.Select(x => new ContactViewModel() { xx = x.xx, yy = x.yy, ... })ToList();