一般数据库中,有实体表的时候,我是这么处理的。
var list = from d in db.Hospital.ToList()
where d.State == 0
orderby d.AddTime descending
select d;
ToJsonSuccess(new ArrayList(list.ToArray()));
假设ToJsonSuccess这个方法是一个将ArrayList对象转化成json格式的方法,我们不去管它。那么问题来了,用linq语法进行jion的时候,并没有实体对象作为映射,如下:
var list = from d in db.Imate
join dd in db.Department on d.DepartmentCode equals dd.DepartmentCode
into imateinfo
from g in imateinfo.DefaultIfEmpty().ToList()
where g.State == 0
select new {
ImateName = d.ImateName
};
ToJsonSuccess(new ArrayList(list.ToList().ToArray()));
这个时候就会报错了,因为无法映射到实体类,.ToArray()就报错了,请问各位大神,你们是这么解决linq联合查询后,生成json格式字符串的?
ToList()可以成功,ToArray()没道理不成功,你到底报什么错。
问题出在这里:
select new {
ImateName = d.ImateName
};
第二个查询你生成的结果是匿名类型,所以导致 出错,你用强类型作为结果试试看:
select new YourClassName {
ImateName = d.ImateName
};