请教一个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格式字符串的?

0

2个回答

ToList()可以成功,ToArray()没道理不成功,你到底报什么错。

1

问题出在这里:

    select new { 
                            ImateName = d.ImateName
                       };

第二个查询你生成的结果是匿名类型,所以导致 出错,你用强类型作为结果试试看:

select new YourClassName { 
                            ImateName = d.ImateName
                       };

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!