怎么将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();
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();