Instead of
return matchingChild;
write
return matchingChild.ToList();
All Linq to sql Queries use a mechanism microsoft calls
Deferred execution, which means the query is not realy executed until you enumerate it (Go Over the results).
When you enumerate the results with
1) ToList
2) ToArray
3) FirstOrDefault, First
4) SingOrDefault, Single
5) Count
Etc, etc...
Which are all extension methods of IEnumerable Interface
(Which IQueryable Inherits from)
So instead of returning the deferred query, just do a to list operation.