在IEnumerable中向上移动项目

Nin*_*ina 3 c# ienumerable

我需要在IEnumerable <>中移动一个项目,即将一个项目移到另一个上面.最简单的方法是什么?

这里有一个类似的问题,但我没有通用列表只有一个IEnumerable <>:Generic List - 在列表中移动一个项目

Kan*_*ane 7

正如@Brian评论的那样,问题是什么move an item in an IEnumerable<> up意思还不清楚.

如果您想为单个项目重新排序IEnumerable,那么下面的代码应该是您正在寻找的.

public static IEnumerable<T> MoveUp<T>(this IEnumerable<T> enumerable, int itemIndex)
{
    int i = 0;

    IEnumerator<T> enumerator = enumerable.GetEnumerator();
    while (enumerator.MoveNext())
    {
        i++;

        if (itemIndex.Equals(i))
        {
            T previous = enumerator.Current;

            if (enumerator.MoveNext())
            {
                yield return enumerator.Current;
            }

            yield return previous;

            break;
        }

        yield return enumerator.Current;
    }

    while (enumerator.MoveNext())
    {
        yield return enumerator.Current;
    }
}
Run Code Online (Sandbox Code Playgroud)