编写此代码的效率更高或更短?

时间:2015-02-18 23:29:18

标签: c# asp.net-mvc linq linq-to-sql relational-database

好的,我的数据库就是这样的。每个公司都有一个与该公司相关的用户列表。每个用户都有一个与该用户相关的客户端列表。我需要一种方法来有效地列出与该公司间接相关的所有客户(客户只与其用户公司关联)。这是我到目前为止所提出的:

 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来优化代码?

1 个答案:

答案 0 :(得分:2)

我转向另一个方向,并使用SelectMany,如下所示:

var clients = company.Users.SelectMany(u => u.Clients)

当然,您需要先获取公司对象(而不是取消ID)。