mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-16 16:50:41 +08:00
Full-text index with multiple fields
This commit is contained in:
parent
db65a316b7
commit
6a8e49623a
@ -10,7 +10,20 @@ namespace SqlSugar
|
||||
{
|
||||
public class ExpressionTool
|
||||
{
|
||||
|
||||
public static List<string> GetNewArrayMembers(NewArrayExpression newArrayExpression)
|
||||
{
|
||||
List<string> strings = new List<string>();
|
||||
// 获取数组元素的 MemberExpression,并输出属性名
|
||||
foreach (var expression in newArrayExpression.Expressions)
|
||||
{
|
||||
var memberExpression = expression as MemberExpression;
|
||||
if (memberExpression != null)
|
||||
{
|
||||
strings.Add(memberExpression.Member.Name);
|
||||
}
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
public static List<string> GetTopLevelMethodCalls(Expression expression)
|
||||
{
|
||||
var methodCalls = new List<string>();
|
||||
|
@ -9,7 +9,10 @@ namespace SqlSugar
|
||||
{
|
||||
public partial class SqlFunc
|
||||
{
|
||||
|
||||
public static bool FullTextContains(string [] columnNames, string keyword)
|
||||
{
|
||||
throw new NotSupportedException("Can only be used in expressions");
|
||||
}
|
||||
public static bool FullTextContains(string columnName,string keyword)
|
||||
{
|
||||
throw new NotSupportedException("Can only be used in expressions");
|
||||
|
@ -354,6 +354,7 @@ namespace SqlSugar
|
||||
{
|
||||
parameter.CommonTempData = CommonTempDataType.Result;
|
||||
base.Expression = item;
|
||||
var isRemoveParamter = false;
|
||||
if (item.Type == UtilConstants.DateType && parameter.CommonTempData.ObjToString() == CommonTempDataType.Result.ToString() && item.ToString() == "DateTime.Now.Date")
|
||||
{
|
||||
parameter.CommonTempData = DateTime.Now.Date;
|
||||
@ -391,10 +392,16 @@ namespace SqlSugar
|
||||
return res;
|
||||
}).ToArray();
|
||||
}
|
||||
else if (name == "Format" && item is ConstantExpression)
|
||||
else if (name == "Format" && item is ConstantExpression)
|
||||
{
|
||||
parameter.CommonTempData = ExpressionTool.GetExpressionValue(item);
|
||||
}
|
||||
else if (name == "FullTextContains" && item is NewArrayExpression)
|
||||
{
|
||||
var array = ExpressionTool.GetNewArrayMembers(item as NewArrayExpression);
|
||||
parameter.CommonTempData = array;
|
||||
isRemoveParamter = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Start();
|
||||
@ -451,15 +458,18 @@ namespace SqlSugar
|
||||
value = result;
|
||||
}
|
||||
methodCallExpressionArgs.MemberValue = value;
|
||||
if (value == null&&item!=null)
|
||||
if (isRemoveParamter != true)
|
||||
{
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value,UtilMethods.GetUnderType( item.Type)));
|
||||
if (value == null && item != null)
|
||||
{
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value, UtilMethods.GetUnderType(item.Type)));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
model.Args.Add(methodCallExpressionArgs);
|
||||
parameter.ChildExpression = null;
|
||||
}
|
||||
|
@ -143,6 +143,10 @@ namespace SqlSugar
|
||||
public override string FullTextContains(MethodCallExpressionModel mode)
|
||||
{
|
||||
var columns = mode.Args[0].MemberName;
|
||||
if (mode.Args[0].MemberValue is List<string>)
|
||||
{
|
||||
columns = "("+string.Join(",", mode.Args[0].MemberValue as List<string>)+")";
|
||||
}
|
||||
var searchWord = mode.Args[1].MemberName;
|
||||
return $" CONTAINS({columns},{searchWord}) ";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user