Выбор родительского и дочернего списка в модели представления с помощью LINQ или Fluent - PullRequest
0 голосов
/ 28 октября 2019

Может кто-нибудь дать мне несколько советов о том, как я могу использовать LINQ для заполнения своей модели представления одним запросом / командой ...

По сути, у меня есть модель представления, которая выглядит примерно так:

public class ReportViewModel
{
     public string ReportName {get; set;}

     public List<Section> Sections {get; set;}
}

Мои модели - это что-то вроде

public class Report
{
     public int ReportId {get; set;}
     public string ReportName {get; set;}
     public virtual ICollection<Section> sections {get; set;}
}

public class Section
{
     public int SectionId {get; set;}
     public int ReportId {get; set;}
     public string SectionName {get; set;}
     public string SectionData {get; set;}
}

И что я хочу сделать, это создать запрос ссылки, который будет заполнять список всех имен отчетов и их разделов + данные .. ... что-то вроде

List<ReportViewModel> rvm = await _context.Report.SelectMany(r => r.SectionData).ToListAsync();

или

List<ReportViewModel> sections = await
(
     from r in _context.Reports
     from s in r.Sections
     select new ReportViewModel() { ReportName = r.ReportName, Sections = s}
).ToListAsync();

, но я не могу заставить ни один из них работать ...

Может кто-нибудь предложить мнекакой-нибудь совет или указываете мне направление ответа?

(Кроме того, это на самом деле не моя модель зрения или модель, но, надеюсь, должна дать представление о том, чего я пытаюсь достичь).

Ура,

Дан

1 Ответ

0 голосов
/ 28 октября 2019

Марк С ответил на мой вопрос для меня. Отметьте, если вы хотите опубликовать свой последний комментарий, я отмечу его как ответ! Спасибо!

По сути, код, который я использовал, был примерно таким:

List<ReportViewModel> rvm = await _context.Report
    .Include(r => r.sections)
    .Select(r => new ReportViewModel() 
    {
        ReportName = r.ReportName, 
        Sections = r.sections
    })
    .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...