Столбец AddMapping в список

У меня есть следующее Student класс, в котором каждый идентификатор имеет список экзаменов, мне нужно сопоставить столбец экзамена со свойством Exams_Line_list, Следующий код возвращает пустой Exams_Line_list

public class Student
    {
        string id;
        public List<String> exams_Line_list = new List<String>();
        public String exams_Line1;

        public string Exams_Line1
        {
            get { return exams_Line1; }
            set { exams_Line1 = value; }
        }

        public string ID
        {
            get { return id; }
            set { id = value; }
        }

        public List<String> Exams_Line_list
        {
            get { return exams_Line_list; }
            set { exams_Line_list = value; }
        }
}

Чтение листа Excel:

IQueryable<Student> Students_var;
var  excel = new ExcelQueryFactory(fileName_global1);

excel.AddMapping<Student>(x => x.ID, "STU_NO");
excel.AddMapping<Student>(x => x.Exams_Line1, "Exam");
Students_var = from c in excel.Worksheet<Student>("Stu_Schedule")
               select c;

List<Student> StudentList_c = Students_var.ToList();

var grouped = StudentList_c.GroupBy(x => x.ID).Select(x => new Student
              {
                ID = x.Key,
                Exams_Line_list = x.SelectMany(z => z.Exams_Line_list).ToList()
              }).ToList();

foreach (var r in grouped)
{
    Console.WriteLine(r.ID);
        foreach (String s1 in r.Exams_Line_list)
                    Console.WriteLine(s1);
}

Схема:

Я добавил свойство String для сопоставления столбца экзамена, (Exams_Line1) точка останова StudentList_c

Теперь он читает все строки, включая повторяющиеся идентификаторы с каждым значением экзамена, но как сгруппировать их в определенный список (Exams_Line1)

1 ответ

Решение

Может быть, вы можете просто использовать это:

var grouped = StudentList_c.GroupBy(x => x.ID).Select(x => new Student
{
   ID = x.Key,
   Exams_Line_list = x.Select(z => z.Exams_Line1).ToList()
}).ToList();

Здесь я предполагаю, что Student_List имеет все строки, соответствующие строкам в листе Excel и Exams_Line1 свойство отображается на Exam колонка.

Другие вопросы по тегам