好的,我的数据库就是这样的。每个公司都有一个与该公司相关的用户列表。每个用户都有一个与该用户相关的客户端列表。我需要一种方法来有效地列出与该公司间接相关的所有客户(客户只与其用户公司关联)。这是我到目前为止所提出的:
List<User> users = db.Users.Where(u => u.CompanyId == 1 /*this company's Id*/).ToList();
List<Client> clients = new List<Client>();
foreach (User user in users)
{
clients.AddRange(user.Clients);
}
这是最好的方法还是有一种方法可以在一行中使用Linq to SQL来优化代码?
答案 0 :(得分:2)
我转向另一个方向,并使用SelectMany
,如下所示:
var clients = company.Users.SelectMany(u => u.Clients)
当然,您需要先获取公司对象(而不是取消ID)。