如何使用LINQ获取包含在多个列表中的元素列表
本文关键字:列表 元素 何使用 LINQ 获取 包含 | 更新日期: 2023-09-27 18:21:15
假设我有代码:
class Program
{
static void Main( string[] args )
{
Company companyA = new Company();
Company companyB = new Company();
companyA.Employees = new List<string> { "A1", "A2" };
companyB.Employees = new List<string> { "B1", "B2" };
List<Company> companyList = new List<Company> {companyA, companyB};
List<string> allEmployees = new List<string>();
foreach( Company company in companyList )
{
allEmployees.AddRange( company.Employees );
}
// ...
}
class Company
{
public List<string> Employees { get; set; }
}
}
我想用companyList中所有公司的员工填写allEmployees。
不使用上面的代码,是否可以通过在companyList对象上使用单个LINQ语句来获得相同的结果?可能类似于:
List<string> allEmployees = companyList.Select( ...? )
使用SelectMany
List<string> allEmployees = companyList.SelectMany(x => x.Employees).ToList();
您可以使用AddRange
+SelectMany
:
allEmployees.AddRange( companyList.SelectMany(c => c.Employees) );
如果你不想把它们添加到现有的列表中,而是想创建一个新的列表:
List<string> allEmployees = companyList.SelectMany(c => c.Employees).ToList();