private IObservable <string> GetPasswordsSequence() { var isUserBased = this.WhenAnyValue(x => x.IsUserLogon); var userBasedLogon = UserBasedLogin.WhenAnyValue(x => x.Password); var emailBasedLogon = EmailBasedLogin.WhenAnyValue(x => x.VerifiedPassword); var usernames = userBasedLogon.CombineLatest(emailBasedLogon, (u, w) => new { Username = u, Email = w }); var sequence = isUserBased.CombineLatest(usernames, (userBased, user) => userBased ? user.Username : user.Email); return(sequence); }