Получение округленных значений в конечном результате запроса Linq

1

Как можно изменить приведенный ниже запрос Linq таким образом, чтобы я мог получить округленную цифру значений.

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

Пожалуйста, проигнорируйте наличие двух положений order by, поскольку это делается с определенной целью. GetStudentsWithThierMarks возвращает список учеников с их именем FirstName и PercentageScore. Я верю в вышеуказанный запрос. Math.Round применим только в том случае, когда во время порядка работы, так что конечный результат все еще содержит значения в десятичных разрядах, тогда как мне интересно только округлять цифры с целыми значениями. Я просто не могу понять синтаксис.

Теги:
linq
lambda

2 ответа

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);
  • 0
    Привет Тим Спасибо за ответ. В первой части предложение OrderByDescending выдаст синтаксическую ошибку.
  • 0
    @ Sike12: вы уверены, что использовали код, который я разместил выше? Я не вижу причину вашей синтаксической ошибки.
Показать ещё 1 комментарий
2

Вам просто нужно Select:

var result= GetStudentsWithTheirMarks()                
            .OrderByDescending(x => Math.Round(x.PercentageScore))
            .Take(5)                 
            .OrderBy(x => x.PercentageScore)
            .Select(x => Math.Round(x.PercentageScore));
  • 0
    Привет Selman22, я знаю, что это синтаксис, но как только я добавлю это в свой запрос, у меня возникнет проблема с синтаксисом в предложении order by, не могли бы вы опубликовать полный запрос. Спасибо
  • 0
    положить его после OrderBy
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню