Ваши объединения собираются испортить вашу мощность! У вас нет списка родителей!
Вот некоторый непроверенный код свободной руки. Добавление отношений в дизайнере Linq дает вам свойства отношений. String.Join соберет список вместе.
Я добавил два необязательных вызова метода.
Где ... Любой будет фильтровать родителей только по тем родителям, у которых есть дети. Я не уверен в строке. Поведение Джоина на пустом массиве.
ToList возвращает родителей в память, к детям будут обращаться дальнейшие обращения к базе данных. Это может быть необходимо, если вы получаете строку времени выполнения. Join не поддерживается переводчиком SQL * исключение . Это исключение будет означать, что LINQ попытался перевести вызов метода во что-то, что SQL Server может понять - и потерпел неудачу.
int parentID = Convert.ToInt32(Request.QueryString["parentId"]);
List<string> result =
db.Parents
.Where(p => p.ParentId == parentID)
//.Where(p => p.ParentChildLookup.Children.Any())
//.ToList()
.Select(p =>
"Name: " + p.ParentName + "<br />" +
"Children: " + String.Join(", ", p.ParentChildLookup.Children.Select(c => c.Name).ToArray() + "<br />"
)).ToList();
Также обратите внимание: как правило, вы не хотите смешивать данные и разметку, пока данные не будут должным образом экранированы для разметки.