sqlsugar的sum的用法

 

 

通过论坛的检索 查到三篇文章是关于sum的

http://www.codeisbug.com/Ask/9/4531

http://www.codeisbug.com/Ask/14/4128

 

文章1:
2018/10/12

复制代码
我自己已经找到解决办法了,分享一下

   var query = DB.FullClient.Queryable<ContractOrders, Contracts>((co, cs) => new object[]{

                JoinType.Inner,co.ContractId==cs.Id

            })

            .WhereIF(!string.IsNullOrEmpty(customerId), (co, cs) => cs.CustomerId == customerId)

            .WhereIF(startDate.HasValue, (co, cs) => cs.ActivateDate >= startDate.Value)

            .WhereIF(endDate.HasValue, (co, cs) => cs.ActivateDate <= endDate.Value.AddDays(1))

            .WhereIF(status.HasValue, co => co.Status == status.Value)

            .Select((co, cs) => new ContractOrdersP<Contracts>

            {

                Code = co.Code,

                Id = co.Id,

                CreateTime = co.CreateTime,

                ContractId = co.ContractId,

                Remark = co.Remark,

                Status = co.Status,

                Contracts = cs,

                TotalPrice = SqlFunc.Subqueryable<ProductConfigs>()

               .Where(r => r.ContractOrderId == co.Id)

                .GroupBy(r => r.ContractOrderId)

                .Select(r => SqlFunc.AggregateSum(r.Quantity * r.DiscountPrice))

            });

用这个函数可以解决, SqlSugar作者 定义了AggregateSum 这种方法, 一般人还真不知道
复制代码

 文章2:

4.x

.Max(it => it.id);

.Sum(it => it.id);

 官方文档的查询函数

 

SqlFunc.Subqueryable子查询的写法

复制代码
 //子查询的版本
                var list = db.Queryable<TC020_Purchase>()
                        .Select(a => new
                        {
                            guid = a.TC020_Guid,
                            compony = a.TC020_Company,
                            SignDate = a.TC020_SignDate,
                            ProjectTitle = a.TC020_ProjectTitle,
                            Signer = a.TC020_Signer,
                            ContractID = a.TC020_ContractID,
                            PaymentClaus = a.TC020_PaymentClause,
                            TotalCount = a.TC020_TotalAmount,

                            paid = SqlFunc.Subqueryable<TC022_PurchasePaymentRecord>()
                                .Where(b => b.TC020_Guid == a.TC020_Guid)
                                .Select(b => SqlFunc.AggregateSum(b.TC022_NotPaid.Value)).ToString(),

                            notpaid = SqlFunc.Subqueryable<TC022_PurchasePaymentRecord>()
                                .Where(b => b.TC020_Guid == a.TC020_Guid)
                                .Select(b => SqlFunc.AggregateSum(b.TC022_Paid.Value)).ToString()

                        }).ToList();
复制代码

 

 Group By的写法

复制代码
  //Group by 版本
                var group = db.Queryable<TC020_Purchase, TC022_PurchasePaymentRecord>((a, b) => new object[] {
                            JoinType.Left,a.TC020_Guid==b.TC020_Guid})

                        .GroupBy(a => new {
                            a.TC020_Guid,
                            a.TC020_Company,
                            a.TC020_SignDate,
                            a.TC020_ProjectTitle,
                            a.TC020_Signer,
                            a.TC020_ContractID,
                            a.TC020_PaymentClause,
                            a.TC020_SalesContractID,
                            a.TC020_TotalAmount
                        })
                        .Select((a,b)=> new {
                            paid=SqlFunc.AggregateSum(b.TC022_NotPaid.Value).ToString(),
                            notpaid= SqlFunc.AggregateSum(b.TC022_Paid.Value).ToString()

                        }).ToList();
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   高山-景行  阅读(4073)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2018-03-01 React VSCode插件
点击右上角即可分享
微信分享提示