mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-05 05:07:57 +08:00
Synchronization code
This commit is contained in:
parent
9887169f1d
commit
b1f8234606
@ -752,6 +752,10 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public string ListAny(MethodCallExpressionModel model)
|
public string ListAny(MethodCallExpressionModel model)
|
||||||
{
|
{
|
||||||
|
if (IsArrayAnyParameter(model))
|
||||||
|
{
|
||||||
|
return ListArrayAny(model);
|
||||||
|
}
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (model.Args[0].MemberValue!=null&&(model.Args[0].MemberValue as IList).Count>0)
|
if (model.Args[0].MemberValue!=null&&(model.Args[0].MemberValue as IList).Count>0)
|
||||||
{
|
{
|
||||||
@ -834,5 +838,100 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return "("+model.Args[0].MemberName + " % "+ model.Args[1].MemberName+")";
|
return "("+model.Args[0].MemberName + " % "+ model.Args[1].MemberName+")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsArrayAnyParameter(MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
var memberValue = model?.Args?.FirstOrDefault()?.MemberValue;
|
||||||
|
return UtilMethods.IsValueTypeArray(memberValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string ListArrayAny(MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
if (model.Args[0].MemberValue != null && (model.Args[0].MemberValue as IList).Count > 0)
|
||||||
|
{
|
||||||
|
sb.Append(" ( ");
|
||||||
|
var listPar = model.Args[1].MemberValue as ListAnyParameter;
|
||||||
|
foreach (var item in (model.Args[0].MemberValue as IList))
|
||||||
|
{
|
||||||
|
var sql = listPar.Sql;
|
||||||
|
if (sb.Length > 3)
|
||||||
|
{
|
||||||
|
sb.Append("OR");
|
||||||
|
}
|
||||||
|
foreach (var columnInfo in listPar.Columns)
|
||||||
|
{
|
||||||
|
var value = item;
|
||||||
|
var newValue = "null";
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
if (UtilMethods.IsNumber(columnInfo.UnderType.Name))
|
||||||
|
{
|
||||||
|
newValue = value.ToString();
|
||||||
|
}
|
||||||
|
else if (columnInfo.UnderType == SqlSugar.UtilConstants.GuidType)
|
||||||
|
{
|
||||||
|
newValue = ToGuid(new MethodCallExpressionModel()
|
||||||
|
{
|
||||||
|
Args = new List<MethodCallExpressionArgs>()
|
||||||
|
{
|
||||||
|
new MethodCallExpressionArgs(){
|
||||||
|
MemberValue=value.ToSqlValue(),
|
||||||
|
MemberName=value.ToSqlValue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (columnInfo.UnderType == SqlSugar.UtilConstants.DateType)
|
||||||
|
{
|
||||||
|
newValue = ToDate(new MethodCallExpressionModel()
|
||||||
|
{
|
||||||
|
Args = new List<MethodCallExpressionArgs>()
|
||||||
|
{
|
||||||
|
new MethodCallExpressionArgs(){
|
||||||
|
MemberValue=UtilMethods.GetConvertValue( value).ToSqlValue(),
|
||||||
|
MemberName=UtilMethods.GetConvertValue( value).ToSqlValue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newValue = value.ToSqlValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Regex regex = new Regex("\@");
|
||||||
|
if (!sql.Contains("@"))
|
||||||
|
{
|
||||||
|
sql = sql.Replace(" =)", $" = {newValue})");
|
||||||
|
if (!sql.Contains(newValue))
|
||||||
|
{
|
||||||
|
sql = sql.Replace(" )", $" = {newValue})");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Regex reg = new Regex(@"@MethodConst\d+");
|
||||||
|
sql = reg.Replace(sql, it =>
|
||||||
|
{
|
||||||
|
return " " + newValue + " ";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
sb.Append(sql);
|
||||||
|
}
|
||||||
|
sb.Append(" ) ");
|
||||||
|
}
|
||||||
|
var result = sb.ToString();
|
||||||
|
if (result.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
return " 1=2 ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,57 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public class UtilMethods
|
public class UtilMethods
|
||||||
{
|
{
|
||||||
|
public static bool IsValueTypeArray(object memberValue)
|
||||||
|
{
|
||||||
|
return memberValue is List<string> ||
|
||||||
|
memberValue is string[] ||
|
||||||
|
memberValue is List<int> ||
|
||||||
|
memberValue is int[] ||
|
||||||
|
memberValue is List<Guid> ||
|
||||||
|
memberValue is Guid[] ||
|
||||||
|
memberValue is List<long> ||
|
||||||
|
memberValue is long[] ||
|
||||||
|
memberValue is List<int?> ||
|
||||||
|
memberValue is int?[] ||
|
||||||
|
memberValue is List<Guid?> ||
|
||||||
|
memberValue is Guid?[] ||
|
||||||
|
memberValue is List<long?> ||
|
||||||
|
memberValue is long?[] ||
|
||||||
|
memberValue is List<float> ||
|
||||||
|
memberValue is float[] ||
|
||||||
|
memberValue is List<double> ||
|
||||||
|
memberValue is double[] ||
|
||||||
|
memberValue is List<decimal> ||
|
||||||
|
memberValue is decimal[] ||
|
||||||
|
memberValue is List<DateTime> ||
|
||||||
|
memberValue is DateTime[] ||
|
||||||
|
memberValue is List<TimeSpan> ||
|
||||||
|
memberValue is TimeSpan[] ||
|
||||||
|
memberValue is List<bool> ||
|
||||||
|
memberValue is bool[] ||
|
||||||
|
memberValue is List<byte> ||
|
||||||
|
memberValue is byte[] ||
|
||||||
|
memberValue is List<char> ||
|
||||||
|
memberValue is char[] ||
|
||||||
|
memberValue is List<short> ||
|
||||||
|
memberValue is short[] ||
|
||||||
|
memberValue is List<ushort> ||
|
||||||
|
memberValue is ushort[] ||
|
||||||
|
memberValue is List<uint> ||
|
||||||
|
memberValue is uint[] ||
|
||||||
|
memberValue is List<ulong> ||
|
||||||
|
memberValue is ulong[] ||
|
||||||
|
memberValue is List<sbyte> ||
|
||||||
|
memberValue is sbyte[] ||
|
||||||
|
memberValue is List<object> ||
|
||||||
|
memberValue is object[] ||
|
||||||
|
memberValue is List<int?> ||
|
||||||
|
memberValue is int?[] ||
|
||||||
|
memberValue is List<Guid?> ||
|
||||||
|
memberValue is Guid?[] ||
|
||||||
|
memberValue is List<long?> ||
|
||||||
|
memberValue is long?[];
|
||||||
|
}
|
||||||
internal static void EndCustomSplitTable(ISqlSugarClient context,Type entityType)
|
internal static void EndCustomSplitTable(ISqlSugarClient context,Type entityType)
|
||||||
{
|
{
|
||||||
if (context == null || entityType == null)
|
if (context == null || entityType == null)
|
||||||
|
Loading…
Reference in New Issue
Block a user