Как получить объекты внуков от родителя с помощью linq

У меня есть несколько отношений родитель> потомок> внук в моей схеме БД. Как правило, У меня есть родитель, и мне нужна информация о внуках. Например, у меня есть пользователь, у которого есть коллекция социальных сетей, в которых есть коллекции друзей. Я ловлю себя на том, что пишу этот код снова и снова.

        var friends = new List<Friend>();
        foreach (var socialNetwork in user.UserSocialNetworks)
        {
            foreach (var friend in socialNetwork.Friends)
            {
                friends.Add(friend);
            }
        }

Есть ли более элегантный способ сделать это с помощью linq?

Я бы действительно хотел иметь возможность использовать "user.Friends", но я бы нужно поместить внешний ключ для пользователя в таблицу друзей, и это плохо пахнет. Вот как это будет выглядеть:

User          {Id,..}
SocialNetwork {Id, UserId, ...}
Friend        {Id, SocialNetworkId, UserId, ... }

Мысли?

8
задан DanielEli 16 February 2011 в 22:26
поделиться