c# - 在 C# 中用一个 ForEach 语句迭代两个列表或数组

标签 c#

这只是一般知识:

如果我有两个,比方说,List,我想用相同的 foreach 循环迭代这两个,我们可以这样做吗?

编辑

澄清一下,我想这样做:

List<String> listA = new List<string> { "string", "string" };
List<String> listB = new List<string> { "string", "string" };

for(int i = 0; i < listA.Count; i++)
    listB[i] = listA[i];

但是有一个 foreach =)

最佳答案

这被称为 Zip操作并将在 .NET 4 中得到支持。

有了它,您就可以编写如下内容:

var numbers = new [] { 1, 2, 3, 4 };
var words = new [] { "one", "two", "three", "four" };

var numbersAndWords = numbers.Zip(words, (n, w) => new { Number = n, Word = w });
foreach(var nw in numbersAndWords)
{
    Console.WriteLine(nw.Number + nw.Word);
}

作为具有命名字段的匿名类型的替代方案,您还可以通过使用 Tuple 及其静态 Tuple.Create 帮助程序来节省大括号:

foreach (var nw in numbers.Zip(words, Tuple.Create)) 
{
    Console.WriteLine(nw.Item1 + nw.Item2);
}

关于c# - 在 C# 中用一个 ForEach 语句迭代两个列表或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955766/

相关文章:

c# - 将 bool Foo(params[]) 作为方法参数传递

C# 泛型重载 - 编译器无法确定正确的调用

c# - 在 C# 中从 HTML 表中检索数据

c# - 如果查询存在则检查是否存在 - 删除

c# - 在 C# 中的 UploadedFile 上使用 BinaryReader 的空数组

c# - 如何使用 WebClient 以编程方式登录到诸如 codeproject 或 stackoverflow 之类的网站?

C# 服务器端确认 ASP.NET 中的对话

C# MySql如何将存储过程与dataGridView绑定(bind)

c# - UWP SQL 连接错误 [c#]

c# - 想要解除下拉列表的绑定(bind)吗?