我有这两个分支:
public class Client{
public List<Address> addressList{get;set;}
}
public class Address{
public string name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个Client名为List的类型testList.它包含n个客户端,每个客户端包含n个地址
List<Client> testList;
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ执行以下操作:
foreach (var element in testList)
{
foreach (var add in element.addressList)
{
console.writeLine(add.name);
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,我不会把它Console.WriteLine放在lambda表达式中,但你可以SelectMany用来避免嵌套:
foreach (var add in testList.SelectMany(x => x.addressList))
{
Console.WriteLine(add.name);
}
Run Code Online (Sandbox Code Playgroud)
我认为没有理由将结果转换为列表,然后List<T>.ForEach在有一个非常好的foreach循环作为语言的一部分时使用.这并不像你自然有一个委托应用于每个名称,例如作为方法参数 - 你总是只是写入控制台.有关更多想法,请参阅Eric Lippert关于该主题的博客文章.
(我还强烈建议您开始遵循.NET命名约定,但这是另一回事.)