internal static void SetListChildResults <Parent>(List <Parent> parents, ModelDefinition modelDef,
FieldDefinition fieldDef, Type refType, IList childResults, FieldDefinition refField)
{
var map = new Dictionary <object, List <object> >();
List <object> refValues;
foreach (var result in childResults)
{
var refValue = refField.GetValue(result);
if (!map.TryGetValue(refValue, out refValues))
{
map[refValue] = refValues = new List <object>();
}
refValues.Add(result);
}
var untypedApi = refType.CreateTypedApi();
foreach (var result in parents)
{
var pkValue = modelDef.PrimaryKey.GetValue(result);
if (map.TryGetValue(pkValue, out refValues))
{
var castResults = untypedApi.Cast(refValues);
fieldDef.SetValueFn(result, castResults);
}
}
}