我从Haskell那里学习了intersperse function,并且一直在寻找C#的实现。

Intersperse接受2个参数,一个IEnumerable 源和一个T元素。它返回一个IEnumerable,其中元素插入到源的每个元素之间。

一种可能的用例是在整数列表之间放置一个任意整数,例如:

// returns: {1, 0, 2, 0, 3}
(List<int>() {1, 2, 3}).Intersperse(0);

这是string.Join(...)的一般情况。

最佳答案

其他人错过的东西:如果您只希望它位于项目之间,而不是前面或后面,则需要进行额外的检查:

public static IEnumerable<T> Intersperse<T>(this IEnumerable<T> source, T element)
{
    bool first = true;
    foreach (T value in source)
    {
        if (!first) yield return element;
        yield return value;
        first = false;
    }
}

关于c# - Enumerable.Intersperse的扩展方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/753316/

10-13 01:05