简体   繁体   中英

Getting Rounded Values in the final result of Linq Query

How can the below linq Query be modified such that i can get a Rounded figure of values.

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

Please ignore the presence of two order by clause as this is done for with a purpose. GetStudentsWithThierMarks returns Student List with their FirstName and PercentageScore. I believe in the above query Math.Round is only applicable when during order by operation so final result still contains values in decimal places whereas i am only interested to see rounded figures with integer values. I just cant figure out the syntax.

You just need a Select :

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

You can store this value in an anonymous type:

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

Now you can access it in this way:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM