Skip to content

Commit ffc809c

Browse files
hazzikbahusoid
authored andcommitted
Optimize GetParameterTypedValues for components
1 parent ba053b0 commit ffc809c

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

src/NHibernate/Criterion/InExpression.cs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -127,26 +127,24 @@ private List<TypedValue> GetParameterTypedValues(ICriteria criteria, ICriteriaQu
127127
{
128128
IType type = GetElementType(criteria, criteriaQuery);
129129

130-
if (type.IsComponentType)
130+
if (!type.IsComponentType)
131131
{
132-
List<TypedValue> list = new List<TypedValue>();
133-
IAbstractComponentType actype = (IAbstractComponentType) type;
134-
IType[] types = actype.Subtypes;
135-
for (int vi = 0; vi < _values.Length; vi++)
132+
return _values.Select(v => new TypedValue(type, v, false)).ToList();
133+
}
134+
135+
List<TypedValue> list = new List<TypedValue>();
136+
IAbstractComponentType actype = (IAbstractComponentType) type;
137+
var types = actype.Subtypes;
138+
foreach (var value in _values)
139+
{
140+
var propertyValues = value != null ? actype.GetPropertyValues(value) : null;
136141
for (int ti = 0; ti < types.Length; ti++)
137142
{
138-
object subval = _values[vi] == null
139-
? null
140-
: actype.GetPropertyValues(_values[vi])[ti];
141-
list.Add(new TypedValue(types[ti], subval, false));
143+
list.Add(new TypedValue(types[ti], propertyValues?[ti], false));
142144
}
143-
144-
return list;
145-
}
146-
else
147-
{
148-
return _values.ToList(v => new TypedValue(type, v, false));
149145
}
146+
147+
return list;
150148
}
151149

152150
/// <summary>

0 commit comments

Comments
 (0)