/// <summary> /// 访问 StartWidth 方法 /// </summary> /// <param name="m">方法表达式</param> protected override Expression VisitStartsWith(MethodCallExpression m) { _visitor.Visit(m.Object); if (this.NotOperands != null && this.NotOperands.Contains(m)) { _builder.Append(" NOT"); } _builder.Append(" LIKE "); if (m.Arguments[0].CanEvaluate()) { ColumnAttribute column = null; bool unicode = DbTypeUtils.IsUnicode(_visitedMark.Current, out column); string value = _dbValue.GetSqlValue(m.Arguments[0].Evaluate().Value, _builder.Token, column); if (!_builder.Parameterized && value != null) { value = value.TrimStart('N').Trim('\''); } if (_builder.Parameterized) { _builder.Append("("); _builder.Append(value); _builder.Append(" + '%')"); } else { if (unicode) { _builder.Append('N'); } _builder.Append("'"); _builder.Append(value); _builder.Append("%'"); } } else { _builder.Append("("); _visitor.Visit(m.Arguments[0]); _builder.Append(" + '%')"); } return(m); }