qingye001
qingye001
采纳率0%
2016-01-12 02:39

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前

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

    点赞 1 评论 复制链接分享
  • q107770540 兔子党-督察 5年前

    问题出在这里:

        select new { 
                                ImateName = d.ImateName
                           };
    

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

    select new YourClassName { 
                                ImateName = d.ImateName
                           };
    
    
    点赞 评论 复制链接分享