LINQ to SQL - 查询字符串在DB中字符串的某个位置的位置

时间:2018-05-10 03:04:36

标签: c# sql linq nhibernate

我有一个字段" name"在一个表中,它是连接名字,第一个姓氏和第二个姓氏的结果("名称第一个第二个")。我试图用名称的任何元素过滤查询。对于名字我用这个:

UserService

第二姓:

// UserLoginComponent
@Component({
  selector: 'app-home-login',
  templateUrl: './home-login.component.html',
  styleUrls: ['./home-login.component.scss']
})
export class HomeLoginComponent implements OnInit {

    @Input() userModel: UserModel;

    loggedinUser: UserModel;

    userloginForm: FormGroup;

    // it doesn't work if it is only 1 Subject (loginListener) used for both userLogin and sessionLogin
    loginListener: Subject<UserModel>;
    loginListenerSubs: Subscription;
    // it will work if I have another Subject (sessionListener) which is used separately for sessionLogin
    // sessionListener: Subject<UserModel>;
    // sessionListenerSubs: Subscription

    constructor(private fb: FormBuilder,
      private router: Router,
      private userService: UserService
    ) {
        this.createForm();
    }

    createForm() {
        this.userloginForm = this.fb.group({
            username: [ '', Validators.required ],
            password: [ '', Validators.required ]
        });
    }

    onSubmitLogin() {
        this.userModel = this.pullFormContent();
        this.userService.userLogin(this.userModel.username, this.userModel.password, this.loginListener);
        // same result if it is placed here as well
        // this.loginListenerSubs = this.loginListener.subscribe(
        //   user => this.onLoginSuccess(user),
        //   error => this.onLoginFailed(error),
        //   () => this.onLoginCompleted()
        // );
    }

    pullFormContent() {
        const formModel = this.userloginForm.value;
        console.log("home-login component: pullformContent formModel");
        console.log(formModel);

        const user: UserModel = {
          userid: 0,
          username: formModel.username,
          password: formModel.password,
        }
        return user;
    }

    onLoginSuccess(user) {
      console.log("loginListener next"); // never get called the second api call
      console.log(user);
      this.loggedinUser = user;
      console.log(this.loggedinUser);
      if ( this.router == null ) {
          console.log("router is null");
      } else {
          this.router.navigate(['/some/user/view']);
      }
    }
    onLoginFailed(error) {
      console.log("loginListener error: " + error);
    }
    onLoginCompleted() {
      console.log("loginListener complete");
    }

    ngOnInit() {
      console.log("home-login-component ngOnInit");
      this.loginListener = new Subject<UserModel>();
      this.loginListenerSubs = this.loginListener.subscribe(
        user => this.onLoginSuccess(user),
        error => this.onLoginFailed(error),
        () => this.onLoginCompleted()
      );
      // try to login automatically
      this.userService.sessionLogin(this.loginListener);

      if ( this.userService.isLoggedIn() ) {
            console.log("user is logged in, todo: auto redirect");
            this.router.navigate(['/some/user/view']);
      }
    }

    ngOnDestroy() {
      console.log("ngOnDestroy");
      this.loginListenerSubs.unsubscribe();
    }

}

但我不知道如何过滤第一个姓氏。如果我使用MatchMode.Anywhere并将第二个姓氏放在第一个姓氏输入中,它就可以了,但这不应该发生。

有没有办法在确切位置搜索第一个姓氏?

0 个答案:

没有答案