Как реализовать метод Linq OrderBy?

Я пытаюсь понять больше о linq, например, если я хочу реализовать Select, я буду реализовывать так

public static IEnumerable Select(IEnumerable source, Func selector)
{
    foreach (var item in source)
    {
        yield return selector(item);
    }
}

где, как это

public static IEnumerable Where(IEnumerable source, Func predicate)
{
    foreach (var item in source)
    {
        if (predicate(item))
            yield return item;
    }
}

Как насчет OrderBy?

Ответы на вопрос(2)

Ваш ответ на вопрос