GetAll groupjoin, который заполняет список - PullRequest
0 голосов
/ 09 мая 2019

У меня есть заявление GetAll, которое захватывает каждого человека и заполняет коллекцию билетов, которая у него есть.Мои классы сокращены следующим образом:

    public class Person
    {
      public int Id {get;set;}
      public string Name {get;set;}
      public ICollection<Ticket> Tickets {get;set;}
    }

    public class Ticket
    {
      public int Id {get;set;}
      public int PersonId {get;set;}
      public string MovieName {get;set;}
    }

Я использую Entity Framework для генерации классов с помощью linq из dbcontext для заполнения запроса.

    public async Task<List<Person>> GetPersonsAsync()
    {
        return await _context.Person.GroupJoin(_context.Ticket,
                p => p.Id,
                c => c.PersonId,
                (per, tix) => PopulatePerson(per,tix) )
            .ToListAsync();
    }

    private Person PopulatePerson(Person per, IEnumerable<Ticket> tix)
    {
        per.Tickets= tix.ToList();
        return per;
    }

Это работает, но у меня былосоздать отдельный частный метод PopulatePerson для достижения этой цели.Как я могу избежать создания частного метода и заполнить список заявок одним и тем же оператором GroupJoin?

1 Ответ

2 голосов
/ 09 мая 2019

Вы можете использовать Include() и позволить EntityFramework делать соединения для вас:

public async Task<List<Person>> GetPersonsAsync()
{
    return await _context.Person
        .Include(p => p.Tickets)
        .ToListAsync();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...