日期:2014-05-17  浏览次数:20547 次

Entity Framework两张表联合查询后返回值是什么?
obj.Emps.Join(
                obj.PubMsgs,
                p => p.EmpID,
                c => c.EmpID,
                (p, c) => new { 
                    p.EmpID,p.Name,c.Mesg
                }).ToList();

这是Emp表和PubMsg表联合查询的结果,但是写在一个方法中,这个方法应该返回一个什么值呢?

------解决方案--------------------
这个不好办啊,你用的是匿名对象,所以只能返回IList对象或者IEnumerable对象,object对象这类已经消除“特性”的通用对象
------解决方案--------------------
 var sss= obj.Emps.Join(
                obj.PubMsgs,
                p => p.EmpID,
                c => c.EmpID,
                (p, c) => new { 
                    p.EmpID,p.Name,c.Mesg
                }).ToList();

鼠标放在var上 就可以看出是什么类型了
------解决方案--------------------
建议取消匿名对象,新封装一个传输对象出来,这样可以使用List<T>,IEnumerable<T>这类强类型接口,方便调用者使用

ps:这也是俺们一直说的model不是一个从一而终的玩意,根据需要他本来就应该灵活组合,所以才会DTO,VO,BO出现