объединить 3 набора данных с помощью linq - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Microsoft Entity Framework и .Net Core 2.1 для создания веб-приложения.

В одном из моих контроллеров я пытаюсь объединить 3 разных набора данных.

Вот как я выполняю фильтрацию данных:

    var eventSponsers = await _context.Sponsers
                    .Where(s => s.catalogId != null).ToListAsync();

    var eventBands = await _context.Bands
        .Where(b => b.typeId == 3).ToListAsync();

    var eventTickets = await _context.Tickets
        .Where(t => t.dateTimeStart >= startDate && t.dateTimeStart <= endDate).ToListAsync();

Теперь мне нужно сделать что-то вроде этого (tsql):

    select *
    from eventBands eb
    left join eventTickets et ON et.venueID = eb.venueID
    left join eventSponsers es ON es.eventID = et.eventID

Есть ли способ сделать это с помощью c # и linq?

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Попробуйте использовать ниже linq, чтобы объединить три набора данных:

var result = from eb in eventBands
                      join et in eventTickets on eb.venueID equals et.venueID into bt
                      from x in bt.DefaultIfEmpty()

                      join es in eventSponsers on x.eventID equals es.eventID into st
                      from y in st.DefaultIfEmpty()
                      select new
                      {
                          // Add your assignments
                          //eb = eb.venueID,
                          //et = x.venueID,
                          //es = y.eventID

                      };

Обновление:

Чтобы вернуть результат для просмотра, попробуйте использовать ViewModel.

 var result = ...
                      select new LinqViewModel
                      {


                      };
 return View(result.ToList());

В представлении:

@model IEnumerable<LinqViewModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...