Получить все данные в виде списка с одним запросом базы данных - PullRequest
0 голосов
/ 03 мая 2019

У меня вопрос по поводу linq / lambda в c #. В настоящее время я выполняю цикл foreach для метода «GetUserServerAsync», поэтому для каждой записи выполняется дополнительный запрос к базе данных.

Во втором методе я попытался избежать спама в запросе из первого метода. Метод работает только для одного сервера. Как я могу сделать это для всех серверов в списке?

public async Task<UserServer> GetUserServerAsync(string serverId, CancellationToken cancellationToken) {
  return await this.Context.UserServer
                    .Where(s => s.ServerId == serverId)
                    .Include(u => u.User)
                    .FirstOrDefaultAsync(cancellationToken);
}

public async Task<List<UserServer>> GetUserServerAsync(IEnumerable<Server.Server> server, CancellationToken cancellationToken) {
  var serverIds = server.Select(x => x.ServerId).ToList();
  return await Context.UserServer
    .Where(x => serverIds.Contains(x.ServerId))
    .Include(u => u.User)
    .ToListAsync(cancellationToken);
}
public class UserServer {

  public string UserServerId { get; set; }

  [Required]
  [InverseProperty("User")]
  public string UserId { get; set; }
  public User User { get; set; }

  [Required]
  [InverseProperty("Server")]
  public string ServerId { get; set; }
  public Server.Server Server { get; set; }
}

Заранее спасибо.

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