首页 新闻 搜索 专区 学院

MVC3中两个表的查询问题

0
悬赏园豆:50 [已解决问题] 解决于 2013-06-03 10:47

比如有两个表:

表:Account中的Invoice,Sched,Fax,Receipt,full这些字段的值分别是表Type里的Aid的值,其中表Account中的每一行的值都不会相同。

我想实现对表Account进行ToList();操作,然后在View页面读出每行的数据,注意在View页面里Invoice,Sched,Fax,Receipt,full这些字段不能显示Aid的值,而是要显示表Type里AId所对应的Name的名称。

想了很长时间都没有没有好的解决方案,我不希望使用循环查询表Type的AId的值来获取Name,这样话才消耗服务器性能了。希望能有高手帮助给个好的解决方案,先谢谢!

问题补充:

根据各位提示,我用lambad实现方式如下:

var lambda=_db.Accounts.Join(_db.AccSubTypes,ac=>ac.Invoice,ast=>ast.Astid,(ac,ast)=>new {ac,ast})
                                                    .Join(_db.AccSubTypes,bc=>bc.ac.Schedule,bst=>bst.Astid,(bc,bst)=>new{bc,bst})
                                                    .Join(_db.AccSubTypes,cc=>cc.bc.ac.TaxStatus,cst=>cst.Astid,(cc,cst)=>new{cc,cst})
                                                    .Join(_db.AccSubTypes,dc=>dc.cc.bc.ac.Receipt,dst=>dst.Astid,(dc,dst)=>new{dc,dst})
                                                    .Join(_db.AccSubTypes,ec=>ec.dc.cc.bc.ac.FullOrNot,est=>est.Astid,(ec,est)=>new {ec,est})
                                                    .Join(_db.AccSubTypes,fc=>fc.ec.dc.cc.bc.ac.Effective,fst=>fst.Astid,(fc,fst)=>new {fc,fst})
                                                    .Select(av=>new AccountView(){Invoice=av.fc.ec.dc.cc.bc.ast.Name,Schedule=av.fc.ec.dc.cc.bst.Name,TaxStatus=av.fc.ec.dc.cst.Name,Receipt=av.fc.ec.dst.Name,FullOrNot=av.fc.est.Name,Effective=av.fst.Name});   
James·wang的主页 James·wang | 初学一级 | 园豆:88
提问于:2013-05-30 10:38
< >
分享
最佳答案
0

select A.ID
      ,B.Name As Invoice
      ,C.Name As Sched
      ,D.Name As Fax
      ,E.Name As Receipt
      ,F.Name As [Full]
 from dbo.Account as A inner join dbo.Type as B on A.Invoice=B.AID
                       inner join dbo.Type as C on A.Sched=C.AID
                       inner join dbo.Type as D on A.Fax=D.AID
                       inner join dbo.Type as E on A.Receipt=E.AID
                       inner join dbo.Type as F on A.[Full]=F.AID

 

用这个,一次可以查出来,我试了

收获园豆:50
休小晓 | 初学一级 |园豆:21 | 2013-05-30 11:06

使用Linq怎么实现?

James·wang | 园豆:88 (初学一级) | 2013-05-30 14:44

@小氕: 有区别吗,哥,将上面的查询语句,匹配成 Linq查询语法,知识复杂了点,而已。且不说,你一定要这种内存,集合方法么,不可以用基础数据库查询语句么

休小晓 | 园豆:21 (初学一级) | 2013-05-30 19:42

@休小晓: 只要能实现此功能,有好方法你能否再分享一下?你所说的基础数据库查询指的什么?关于Linq查询语法根据你的提示已经实现了,你还有啥好方法?小弟准备给你结贴了

James·wang | 园豆:88 (初学一级) | 2013-05-31 15:06

@小氕:我已开始以为你用的是sqlserver,所以我就用sqlserver给你做了个例子,其实方法有很多,像这种数据量不大的也可以多查询几次而得到结果,但是我的意思是一次查询获取是最合理的,你用的linq查询语法只要实现了一次获取而非多次循环查询,我就觉得已经算是比较好的答案了。

休小晓 | 园豆:21 (初学一级) | 2013-05-31 15:41
其他回答(1)
0

写存储过程,然后在controller中写一个查看方法,view中用model来获取 ,我刚刚用这中方法实现了一个三表联查效果你可以试试

安朵 | 园豆:129 (初学一级) | 2013-05-30 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册