mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
参数化增加 ExpandoObject支持 #1403
This commit is contained in:
parent
53936377c3
commit
6f52ec990b
@ -1433,14 +1433,25 @@ namespace FreeSql.Internal
|
|||||||
var type = obj.GetType();
|
var type = obj.GetType();
|
||||||
if (ttype.IsAssignableFrom(type)) return new[] { (T)obj };
|
if (ttype.IsAssignableFrom(type)) return new[] { (T)obj };
|
||||||
var ret = new List<T>();
|
var ret = new List<T>();
|
||||||
var dic = obj as IDictionary<string, object>;
|
if (obj is IDictionary<string, object> dic1)
|
||||||
if (dic != null)
|
|
||||||
{
|
{
|
||||||
foreach (var key in dic.Keys)
|
foreach (var key in dic1.Keys)
|
||||||
|
{
|
||||||
|
var dbkey = key.TrimStart('@', '?', ':');
|
||||||
|
if (isCheckSql && string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{dbkey}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
||||||
|
var val = dic1[key];
|
||||||
|
var valType = val == null ? typeof(string) : val.GetType();
|
||||||
|
if (ttype.IsAssignableFrom(valType)) ret.Add((T)val);
|
||||||
|
else ret.Add(constructorParamter(dbkey, valType, val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (obj is IDictionary dic2)
|
||||||
|
{
|
||||||
|
foreach (var key in dic2.Keys)
|
||||||
{
|
{
|
||||||
var dbkey = key.ToString().TrimStart('@', '?', ':');
|
var dbkey = key.ToString().TrimStart('@', '?', ':');
|
||||||
if (isCheckSql && string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{dbkey}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
if (isCheckSql && string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{dbkey}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
||||||
var val = dic[key];
|
var val = dic2[key];
|
||||||
var valType = val == null ? typeof(string) : val.GetType();
|
var valType = val == null ? typeof(string) : val.GetType();
|
||||||
if (ttype.IsAssignableFrom(valType)) ret.Add((T)val);
|
if (ttype.IsAssignableFrom(valType)) ret.Add((T)val);
|
||||||
else ret.Add(constructorParamter(dbkey, valType, val));
|
else ret.Add(constructorParamter(dbkey, valType, val));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user