贴查询语句 和 查询结果图
List<T_attend> user = (from a in model.T_attend
join b in model.T_userinfo
on a.UserId equals b.Id
join c in model.T_worked
on a.UserId equals c.UserId
select a
).ToList();
结果:
你就Select a,只有T_Attend的字段。
至于为啥有T_userinfo的连接,是因为你数据库设计了关系。
而没有T_worked,那是因为数据库没有关系。
我数据库设计的时候都没有设外键,在建立实体数据模型的时候添加的主外键联系,这样不可以吗?我就是想联结三张表,读取三张表中的数据,然后在前台显示出来,刚接触mvc,linq,有些地方不是很明白.
我把T_worked 和 T_userinfo 两张表联结就能查到数据
@最美的不是下雨天:
1、如果不管这样设计好不好,只是要达到你的目标,你只要在数据库添加T_Attend和T_Work的关系就可以。
2、这样的设计是不合理的,通常。除非你确定不会造成大量的数据下载。
@爱编程的大叔:我这表T_userinfo 和 T_attend 有主外键联系,T_userinfo 和 T_worked有主外键联系,
为什么那样联结不对呢?你看我下面的图片,查到想要的数据了,传给前台的时候提示(图片),我在前台该怎么输出呢?
@最美的不是下雨天: 当你使用了Select New的时候,
MODEL已经变成一个匿名类型了,你是无法再使用 Model.Property这样的访问方式了。
如果想要这样访问,则需要再自己定义一个新的MODEL
然后使用Select New Model 这样的方式来将数据库结果放入这样MODEL类型中。
你现在这个阶段就是多看书,多练习,有些感觉你还没有找到。
多看多练就行了。
@爱编程的大叔: 恩,好的,自己看资料有一点点明白,还是多看看吧,刚接触模模糊糊的感觉,谢谢你
你返回的是一组匿名对象,所以才报这个错
select new xxx{
a.Attend,
.....
}
你定义一个 xxx ViewModel, 进行传递就不会报这个错了
恩,已经解决了 还是谢谢你
既然你的select是a,为什么要有a之外的内容?b和c只是起到限制a的结果的条件控制而已。
我不是想要a之外的内容啊,我就是想把三张表连起来,然后在前台读出来,两张表是可以的,三张表不行,暂时换了一种方式实现,刚接触,里面的原理不是很懂,还需要多学习。