zoukankan      html  css  js  c++  java
  • Linq不分组求多列的和

    我们需要写Linq查询语句,使用let来创建一个新的变量

    Let 关键字

    “let”关键字在查询语法中很有用。它会投影一个新的范围变量,允许重新使用表达式并使查询更具可读性。

    例如: 这里需要写,两遍   let可以看成在查询语法里面申明一个变量。

     

    方法:

    /// <summary>
            /// 监控数据
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            public async Task<IHttpActionResult> JkDataAsync()
            {
                try
                {
                    int day = DateTime.Now.Day;       
                    IList<RbBgdata> result = await dbOracle.RbBgdatas.AsQueryable().Where(x => x.Createtime.Value.Day == day).ToListAsync();
                    var ii = (from x in result
                              let Partakenum = result.Sum(ee => ee.Partakenum)
                              let Unpartakenum = result.Sum(ee => ee.Unpartakenum)
                              let Qualifiednum = result.Sum(ee => ee.Qualifiednum)
                              let Unqualifiednum = result.Sum(ee => ee.Unqualifiednum)
                              select new
                              {
                                  PartakenSum = Partakenum,   //参与用户
                                  UnpartakeSum = Unpartakenum, //总用户
                                  QualifiedSum = Qualifiednum, //合格数
                                  UnqualifiedSum = Unqualifiednum //不合格数
                              }
                                           ).FirstOrDefault();
    
                    object obj = new
                    {
                        PartakeNum = ii.PartakenSum,
                        UnPartakeNum = ii.UnpartakeSum - ii.PartakenSum,
                        TotalPartakNum = ii.UnpartakeSum,
                        Cyl = (ii.UnpartakeSum == 0 ? 0 : Math.Round((ii.PartakenSum.Value * 1.0 / ii.UnpartakeSum.Value) * 100, 2)) + "%",
                        QualifiedNum = ii.QualifiedSum,//合格数
                        UnQualifiedNum = ii.UnqualifiedSum,
                        Zql = ((ii.QualifiedSum + ii.UnqualifiedSum) == 0 ? 0 : Math.Round((ii.QualifiedSum.Value * 1.0 / (ii.QualifiedSum.Value + ii.UnqualifiedSum.Value)) * 100, 2)) + "%"
                    };
                    return await Task.FromResult(Ok(new { errcode = 0, data = obj }));
                }
                catch (Exception ex)
                {
                    return await Task.FromResult(Ok(new { errcode = 0, errmsg = ex.Message }));
                }
            }

  • 相关阅读:
    linux tcp/ip 调优
    ulimit 管理系统资源
    linux grep 设置高亮显示
    linux 调整内核优化
    微信公众平台自定义菜单及高级接口PHP SDK
    微信公众平台开发(102) 模版消息
    微信WeixinJSBridge API
    微信支付开发(2) 静态链接Native支付
    微信分享JS接口失效说明及解决方案
    微信JS接口
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10450949.html
Copyright © 2011-2022 走看看