我们需要写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 })); } }