编写此代码的更有效或更短的方法?
More efficient or shorter way to write this code?
好的,我的数据库是这样工作的。每家公司都有一份与该公司相关的用户列表。每个用户都有一个与该用户相关的客户列表。我需要一种方法来有效地列出与该公司间接关联的所有客户(客户只与其用户的公司关联)。这是我到目前为止想出的:
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 SQL 来优化代码?
我会走另一个方向,使用 SelectMany
,像这样:
var clients = company.Users.SelectMany(u => u.Clients)
当然,您确实需要先获取公司对象(而不是关闭 ID)。
好的,我的数据库是这样工作的。每家公司都有一份与该公司相关的用户列表。每个用户都有一个与该用户相关的客户列表。我需要一种方法来有效地列出与该公司间接关联的所有客户(客户只与其用户的公司关联)。这是我到目前为止想出的:
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 SQL 来优化代码?
我会走另一个方向,使用 SelectMany
,像这样:
var clients = company.Users.SelectMany(u => u.Clients)
当然,您确实需要先获取公司对象(而不是关闭 ID)。