果糖网

一个联表查询转SQLSugar 问题 返回

SqlSugar
6 80

主从表
主表:Tb            实体名:tbentity
子表:Tb_Det     实体名:detentity


原生 SQL:  select * from tb as t left join (select count(1),sum(det_money) from tb_det group by tid) as c on c.tid=t.tid 就这样

我这样写的
var q1 =  db.Queryable<tbentity>();

var q2 =  db.Queryable<detentity>()

            .GroupBy(it => new { it.tid })

            .Select(it =>(dynamic)new { sumMoney = SqlFunc.AggregateSum(it.det_money), orderCount = SqlFunc.AggregateCount(it.orderID), it.tid });

var list = db.Queryable<tbentity,dynamic>(list, list2, (p1, p2) => p1.tid== p2.tid ).toList()

直接编绎不通过,请问如何改?
image.png



查看了下文档,正是
image.png

但必须要返回匿名对象,应该怎么改?



热忱回答6

  • 返回匿名对象可以, join的queryable不能是匿名对象

    0 回复
  • var q2 =  db.Queryable<detentity>()

                .GroupBy(it => new { it.tid })

                .Select(it =>(dynamic)new { sumMoney = SqlFunc.AggregateSum(it.det_money), orderCount = SqlFunc.AggregateCount(it.orderID), it.tid }).ToClassString(); //这样可以拿到类的字符串 然后你换成new 类


    0 回复
  • 那要达到下面这个SQL该怎么写? 派生的 C表,就是个匿名对象
     select * from tb as t left join (select count(1),sum(det_money) from tb_det group by tid) as c on c.tid=t.tid 

    0 回复
  • var q1 =  db.Queryable<tbentity>();
    var q2 =  db.Queryable<detentity>()
                .GroupBy(it => new { it.tid })
                .Select(it => new 类 { sumMoney = SqlFunc.AggregateSum(it.det_money), orderCount = SqlFunc.AggregateCount(it.orderID), it.tid });
    var list = db.Queryable<tbentity,类>(list, list2, (p1, p2) => p1.tid== p2.tid )
    .Select((p1,p2)=>new {...}).toList()


    0 回复
  • 谢谢,我试下

    0 回复
  • 嗯,可以了,也就是说,一定不是能匿名对象。

    0 回复

学习文档