假设我有这两个数组:
const int length = 5;
var ints = new int[length] { 1, 2, 3, 4, 5 };
var strings = new string[length] { "s1", "s2", "s3", "s4", "s5" };
我想遍历这些而不是这个
for (var index = 0; index < length; index++)
{
var i = ints[index];
var s = strings[index];
DoSomething(i, s);
}
我想知道我是否可以使用 LINQ 以某种方式实现这样的目标
var items = ... i in ints
... s in strings
select new { I = i, S = s };
foreach (var item in items)
{
DoSomething(item.I, item.S);
}
像这样嵌套 from
是行不通的
var items = from i in ints
from s in strings
select new { I = i, S = s };
因为这将为每次外部迭代重复内部 from
。
最佳答案
按照@CharlesNRice 的建议,您可以像这样使用 LINQ Zip:
var items = ints.Zip(strings, (i, s) => new {I = i, S = s});
关于c# - 使用 LINQ 组合不同类型的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23177105/