问题描述
- 请教一个EF框架序列化的问题
-
一般数据库中,有实体表的时候,我是这么处理的。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
};
时间: 2024-10-01 18:50:12