c# - 使用 LINQ 组合不同类型的集合

标签 c# linq

假设我有这两个数组:

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/

相关文章:

c# - 根据 "deleted"标志过滤 LINQ 结果

c# - 将连续日期组合成范围

C# 林奇 : Dynamically create property and values that includes sum of a value from a grouped query

c# - 如何使用 LINQ 查找列表中下一个匹配元素的索引

c# - int++ 和页面加载问题

c# - 如果任何操作中存在变量,则设置 cookie

c# - JavaScript : how do I prevent a user from selecting anything in a select option list without using disable/pointer-events?

c# - 谁能解释一下以下两个查询的区别?

c# - 获取独占进程句柄

c# - 如何检索 LoaderExceptions 属性?