Как можно изменить приведенный ниже запрос Linq таким образом, чтобы я мог получить округленную цифру значений.
var result=GetStudentsWithTheirMarks()
.OrderByDescending(x => Math.Round(x.PercentageScore)).Take(5)
.OrderBy(x => x.PercentageScore);
Пожалуйста, проигнорируйте наличие двух положений order by, поскольку это делается с определенной целью. GetStudentsWithThierMarks возвращает список учеников с их именем FirstName и PercentageScore. Я верю в вышеуказанный запрос. Math.Round применим только в том случае, когда во время порядка работы, так что конечный результат все еще содержит значения в десятичных разрядах, тогда как мне интересно только округлять цифры с целыми значениями. Я просто не могу понять синтаксис.
Вы можете сохранить это значение в анонимном типе:
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);
Вам просто нужно Select
:
var result= GetStudentsWithTheirMarks()
.OrderByDescending(x => Math.Round(x.PercentageScore))
.Take(5)
.OrderBy(x => x.PercentageScore)
.Select(x => Math.Round(x.PercentageScore));