在Linq Query的最终结果中获取圆角值

时间:2014-07-21 09:49:05

标签: c# .net linq lambda

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

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

请忽略两个ord​​er by子句的存在,因为这样做是出于某种目的。 GetStudentsWithThierMarks返回带有FirstName和PercentageScore的学生列表。 我相信上面的查询Math.Round仅适用于在操作顺序期间,因此最终结果仍包含小数位的值,而我只想看到带有整数值的舍入数字。我只是想弄清楚语法。

2 个答案:

答案 0 :(得分:2)

您只需要一个Select

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

答案 1 :(得分:1)

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

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