我的数据库架构中有几个父 > 子 > 孙子关系。通常,我有 parent ,我想要一些关于孙子的信息。例如,我有一个用户,他拥有一系列社交网络,其中包含 friend 的集合。我发现自己一遍又一遍地编写这段代码。
var friends = new List<Friend>();
foreach (var socialNetwork in user.UserSocialNetworks)
{
foreach (var friend in socialNetwork.Friends)
{
friends.Add(friend);
}
}
有没有更优雅的方式来用 linq 做到这一点?
我真正想做的是“user.Friends”,但我必须在 friend 表中为用户放置一个外键,这闻起来不太对劲。这就是它的样子:
User {Id,..}
SocialNetwork {Id, UserId, ...}
Friend {Id, SocialNetworkId, UserId, ... }
想法?
最佳答案
您可以将代码作为 User
上的方法编写一次。类(class):
partial class User
{
public IEnumerable<Friend> Friends()
{
return from socialNetwork in this.UserSocialNetworks
from friend in socialNetwork.Friends
select friend;
}
}
或者,您可以只使用
SelectMany()
:var friends = user.UserSocialNetworks.SelectMany(socialNtwk=>socialNtwk.Friends);
关于.net - 如何使用 linq 从父对象检索孙对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022900/