Как разделить данные в зависимости от значений в c#

#c# #asp.net-web-api #split

Вопрос:

В моем проекте(Angular и .net) есть функция загрузки подробной информации о курсах, которые посещает конкретный студент.Как только отчет будет загружен,отчет будет виден, как показано в таблице ниже, на листе Excel.

введите описание изображения здесь

В моем бэкэнд-коде(веб-api) в классе поставщика метод relavant для этой загрузки выглядит следующим образом.

 public async Task<students> GetReport(string sId)
{
    var response = await dbAccess.GetCoursesForReport(sId);

    return studentReportMapper.Map(response);
}
 

то, что я получаю в ответ, — это значения в приведенной выше таблице.

что я хочу знать, так это как я могу изменить описанный выше метод,чтобы разделить курсы в зависимости от пройденного уровня(level1,level2, level3).Потому что я хочу показать детали на отдельных листах Excel в зависимости от уровней,которые они прошли, при загрузке отчета.(В приведенном выше случае на трех разных листах с именами level1,level2 и level3), как и сейчас, отчет загружается на одном листе.

Комментарии:

1. Можете ли вы перефразировать этот вопрос? Я не совсем понимаю, о чем ты спрашиваешь? Вы можете передать параметр для фильтрации по пройденному уровню. Или вы можете вернуть список учащихся, сгруппированных по пройденным уровням. Также можете ли вы предоставить модель для students ?

2. @Greg Я уже реализовал эту модель. отчет загружается в виде таблицы выше на одном листе Excel. Функция работает правильно. Что я хочу сделать, так это изменить функцию, как упоминалось выше, разделив ее на завершенный уровень. (Потому что,если студент просто нажмет кнопку загрузки,он будет загружен, как указано в таблице выше, и если пользователь установит флажок для разделенной версии отчета, то отчет должен быть разделен на 3 листа в зависимости от каждого уровня)

3. Группа на завершенном уровне?

4. что-то вроде этого dotnetfiddle.net/XZWphf ?

5. @рисса dotnetfiddle.net/AVfnQO упростил некоторые вещи

Ответ №1:

Вы можете легко сделать это с помощью LINQ

 var levelOne = result.Where(x => x.Level == 1).ToList();
var levelTwo = result.Where(x => x.Level == 2).ToList();
var levelThree = result.Where(x => x.Level == 3).ToList();
 

Теперь вам нужно будет построить свой ответ с помощью списков, и это все.