假设有两个页面和两个用户,并且两个用户都为这两个页面添加了书签。
如果你发出
dlo.LoadWith<Page>(p => p.Bookmarks);
dlo.LoadWith<Bookmark>(b => b.User);
dc.DataLoadOptions = dlo;
List<Page> myPages = dc.Page.ToList();
然后linqtosql将加载2个页面、4个书签和2个用户,并构建预期的对象图。
然后,要在不影响数据库的情况下获得不同的用户,必须遍历图形并执行以下操作:
List<User> myUsers = myPages
.SelectMany(p => p.Bookmarks)
.Select(b => b.User)
.Distinct()
.ToList()
在这种情况下,用户可以多次在同一页面上书签,因此它们不明显。
好吧,这是一张未经测试的照片。
List<PageWithUsers> myPages = dc.Pages
.Select(p => new PageWithUsers()
{
Page = p
Users = p.Bookmarks
.Select(b => b.UserId)
.Distinct()
.Take(10)
.Select(i => dc.Users.Where(u => u.UserId = i))
})
.ToList();