首页 新闻 会员 周边 捐助

Linq三张表连接分组和排序

0
悬赏园豆:50 [已解决问题] 解决于 2015-04-07 12:10
  1. 有三表a,b,c
  2. a与b 为 一对多
  3. b与c 为 一对多
  4. c有列x

需求如下:

返回按sum(x)排序的分页a对象数据,醉了求大神帮忙,很急。

素和墨如的主页 素和墨如 | 初学一级 | 园豆:143
提问于:2014-12-29 12:27
< >
分享
最佳答案
0

1、select a.id, sum(c.x) as totalX from .....  

2、select a.* from a 

      inner join (....)k on a.id=k.id order by k.TotalX

收获园豆:30
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-12-29 13:44

关键是用linq to sql……

素和墨如 | 园豆:143 (初学一级) | 2014-12-29 14:49

@素和墨如: LINQ更简单了,LINQ是支持Lazy loading的,也就是说你可以这样写

var query1= from c in TableA

                   join d in TableB on ...

                   join e in TableC on ...

                    select c.AID, e.x

 

'合计

var query2= from c in query1

                    group into ....

       select new

        {

          AID= c.AID,

          TotalX= sum(g.x)

        }

 

var query3 = from c in tableA

                     join d in query2 on c.AID=d.AID

                     order by d.TotalX

                     select c

 

 

//分页

var query4 = (from c in query3

        select c).skip(pageCount*PageSize).take(PageSize)

                     

 

你说说看你哪一个LINQ不会写吧。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-12-29 14:53
其他回答(1)
0

你主要是哪里不晓得呢,不行了就一个一个查,然后作为变量传递,因为做联合查询的话,还是原生态的sql吧,linq效果并不是很好,必经是经过处理的,如果要用sum的话sum = c.sum(x => x.a),分页的话linq里面那个take应该就是的

MVC分页(linq)

收获园豆:20
_Vegetables | 园豆:586 (小虾三级) | 2014-12-29 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册