У меня есть 2 класса с одинаковой структурой таблиц в БД.
public class Student
{
public int SId {get; set;}
public string SName {get; set;}
public List<StudentDetail> SDetail {get; set;}
}
public class StudentDetail
{
public int StudentDetailId {get; set;}
public int StudentId {get; set;}
public int ExamId {get; set;}
public string Department {get; set;}
public string Address{get; set;}
}
. Данные извлекаются из SQL путем объединения обеих таблиц с использованием StudentId.Каждый StudentId может иметь несколько данных о ученике.Теперь я хочу заполнить данные в вышеупомянутых 2 классах.Я написал следующий код.Поскольку у одного идентификатора есть несколько деталей, поэтому я использовал group by.
var list = dataTable.AsEnumerable()
.Select(x => new Student
{
SId = x.Field<int>("SId"),
SName = x.Field<string>("SName"),
SDetail = new List<StudentDetail>
{
new StudentDetail
{
StudentDetailId = x.Field<int>
("StudentDetailId"),
ExamId = x.Field<int>("ExamId"),
Department = x.Field<string>("Department")
}
}.ToList()
}).GroupBy(x => x.SId).Select(x =>
x.FirstOrDefault()).ToList();
Но, например, для Id 1, если есть 2 детали, тогда в списке деталей ученика должно быть 2 записи.Но этот код создает две записи Id, имеющие одну запись в Student Detail, каждую из которых, как показано ниже
Id -> 1 -> SId -> 1
Id -> 1 -> SId -> 2
Данные должны быть созданы, как показано ниже:
Id -> 1 -> SId -> 1
-> SId -> 2
Любая помощь?