在Linq查询的最终结果中获得舍入值

本文关键字:舍入 结果 Linq 查询 | 更新日期: 2023-09-27 18:13:55

如何修改下面的linq查询,以便我可以得到一个整数的值

                 var result=GetStudentsWithTheirMarks()                
                .OrderByDescending(x => Math.Round(x.PercentageScore)).Take(5)                 
                .OrderBy(x => x.PercentageScore);

请忽略两个order by子句的存在,因为这是有目的的。GetStudentsWithThierMarks返回带有FirstName和PercentageScore的学生列表。我相信上面的查询数学。四舍五入仅适用于按顺序操作期间,因此最终结果仍然包含小数位数的值,而我只对看到整数值的四舍五入数字感兴趣。我就是看不懂语法

在Linq查询的最终结果中获得舍入值

你只需要一个Select:

var result= GetStudentsWithTheirMarks()                
            .OrderByDescending(x => Math.Round(x.PercentageScore))
            .Take(5)                 
            .OrderBy(x => x.PercentageScore)
            .Select(x => Math.Round(x.PercentageScore));

您可以将此值存储为匿名类型:

var result = GetStudentsWithTheirMarks()    
  .Select(s => new 
  { 
      Student = s, 
      RoundedPercentageScore = Math.Round(s.PercentageScore) 
  })          
  .OrderByDescending(x => x.RoundedPercentageScore )
  .Take(5)                 
  .OrderBy(x => x.Student.PercentageScore);

现在你可以这样访问它:

foreach(var x in result)
    Console.WriteLine("RoundedPercentageScore: " x.RoundedPercentageScore);