• 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 }));
                }
            }

  • 相关阅读:
    Spring之Condition(二)在哪里解析的
    SpringBoot启动跟代码过程
    Spring之Condition(一)
    Kafka之 vm.max_map_count
    Redis常见面试题
    Redis为什么快
    TCP一个包多大
    场景问题
    这是一个测试
    小程序-使用django-drf开接口的步骤
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10450949.html
Copyright © 2020-2023  润新知