 <p>My only current solution uses reflection to build the <code>string</code> or paths for the <code>.Expand</code> method.</p> <pre><code>foo_entitiesctx = new foo_entities(new Uri("http://url/FooService.svc/")); ctx.MergeOption = MergeOption.AppendOnly; var collections = from pi in typeof(TestResult).GetProperties() where IsSubclassOfRawGenericCollection(pi.PropertyType) select pi.Name; var things = ctx.Things.Expand(string.Join(",", collections)); foreach (var item in things) { foreach (var child in item.ChildCollectionProperty1) { //do thing } } </code></pre> <p>(The <code>IsSubclassOfRawGenericCollection</code> method is a wrapper around the <code>IsSubclassOfRawGeneric</code> method from <a href="http://stackoverflow.com/questions/457676/c-reflection-check-if-a-class-is-derived-from-a-generic-class/457708#457708">Jared Par on SO</a>)</p>