The goal is to issue the fewest queries to SQL Server using LINQ to SQL without using anonymous types. The return type for the method will need to be IList
What you have should be correct, you need to add this dataContext.DeferredLoadingEnabled = false;
in addition to the LoadOptions you are already setting.
var children2 = from child2 in dataContext.Child2
where children.Any(c1 => c1.Parent == child2.Parent)
select child2;
Should result in a single exists query, so it will end up being two queries.