- 修复 WhereDynamicFilter System.Text.Json 下的问题;

This commit is contained in:
28810 2020-08-25 14:08:02 +08:00
parent d0c5d84780
commit 6cbc452e46
3 changed files with 34 additions and 8 deletions

View File

@ -175,6 +175,16 @@ namespace base_entity
""Operator"" : ""eq"",
""Value"" : ""product-4""
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [100,200]
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [""101"",""202""]
},
]
}
");
@ -228,6 +238,16 @@ namespace base_entity
""Field"" : ""testint"",
""Operator"" : 8,
""Value"" : ""12""
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [100,200]
},
{
""Field"" : ""testint"",
""Operator"" : ""Range"",
""Value"" : [""101"",""202""]
}
]
}
@ -235,7 +255,6 @@ namespace base_entity
Products.Select.WhereDynamicFilter(wdy1).ToList();
Products.Select.WhereDynamicFilter(wdy2).ToList();
var items1 = Products.Select.Limit(10).OrderByDescending(a => a.CreateTime).ToList();
var items2 = fsql.Select<Products>().Limit(10).OrderByDescending(a => a.CreateTime).ToList();

View File

@ -130,13 +130,6 @@
清空状态数据
</summary>
</member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)">
<summary>
添加

View File

@ -551,6 +551,20 @@ namespace FreeSql.Internal.CommonProvider
fiValueList.Add(string.Concat(fiValueIeItem));
return fiValueList.ToArray();
}
var fiValueType = fi.Value.GetType();
if (fiValueType.FullName == "System.Text.Json.JsonElement")
{
var fiValueKind = fiValueType.GetProperty("ValueKind").GetValue(fi.Value, null).ToString();
if (fiValueKind == "Array")
{
fiValueIe = fiValueType.GetMethod("EnumerateArray", new Type[0])?.Invoke(fi.Value, null) as IEnumerable;
var fiValueList = new List<string>();
foreach (var fiValueIeItem in fiValueIe)
fiValueList.Add(string.Concat(fiValueIeItem));
return fiValueList.ToArray();
}
return fi.Value.ToString().Split(',');
}
return new string[0];
}