У меня вопрос по поводу 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; }
}
Заранее спасибо.