gpt4 book ai didi

c# - 如何在 Linq 中处理 "parallel"序列?

转载 作者:太空狗 更新时间:2023-10-30 01:28:22 24 4
gpt4 key购买 nike

假设我有 2 个枚举,我知道它们具有相同数量的元素,并且每个元素与另一个枚举中相同放置的元素“对应”。有没有办法同时处理这 2 个枚举,以便我可以同时访问每个枚举的相应元素?

使用理论上的 LINQ 语法,我的想法是这样的:

from x in seq1, y in seq2
select new {x.foo, y.bar}

最佳答案

由于 Neil Williams 删除了他的回答,我将继续发布指向 implementation by Jon Skeet 的链接。 .

解释相关部分:

public static IEnumerable<KeyValuePair<TFirst,TSecond>> Zip<TFirst,TSecond>
(this IEnumerable<TFirst> source, IEnumerable<TSecond> secondSequence)
{
using (IEnumerator<TSecond> secondIter = secondSequence.GetEnumerator())
{
foreach (TFirst first in source)
{
if (!secondIter.MoveNext())
{
throw new ArgumentException
("First sequence longer than second");
}
yield return new KeyValuePair<TFirst, TSecond>(first, secondIter.Current);
}
if (secondIter.MoveNext())
{
throw new ArgumentException
("Second sequence longer than first");
}
}
}

请注意 KeyValuePair<>是我的补充,而且我通常不喜欢以这种方式使用它。相反,我会定义一个通用的 PairTuple类型。但是,它们未包含在框架的当前版本中,我不想用额外的类定义来扰乱此示例。

关于c# - 如何在 Linq 中处理 "parallel"序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com