Почему List не реализует IOrderedEnumerable ?

я хотел бы работать с упорядоченными перечисляемыми объектами и использовать интерфейсы как возвращаемые типы, а не конкретные типы. Мне нужно вернуть упорядоченный набор объектов. Но при использовании реализации IList я не могу вернуть IOrderedEnumerable , поскольку IList не наследует ] IOrderedEnumerable .

В приведенном ниже примере у меня есть модель представления с репозиторием серий, реализованная как List объектов серии, которые, поскольку они находятся в Список , заказанный. В качестве метода доступа я хочу вернуть отфильтрованный набор серии, в котором возвращаются только объекты серии определенного типа, сохраняя при этом исходный порядок среди отфильтрованных элементов.

/// <summary>
/// Represents the view model for this module.
/// </summary>
public class ViewModel : AbstractViewModel
{
    /// <summary>
    /// Gets the series repository.
    /// </summary>
    /// <value>The series repository.</value>
    public IList<ISeries> SeriesRepository { get; private set; }

    //...
}

//8<-----------------------------

    /// <summary>
    /// Gets the series of the specified type.
    /// </summary>
    public IOrderedEnumerable<T> Series<T>() where T : ISeries
    {
        return ViewModel.SeriesRepository.OfType<T>(); //compiler ERROR
    }

Компилятор сообщает мне:

Error   14  Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<T>' to 'System.Linq.IOrderedEnumerable<T>'. An explicit conversion exists (are you missing a cast?) ...

Как я могу я поддерживаете такой сценарий? И почему List не реализует IOrderedEnumerable?

EDIT : Чтобы прояснить мои намерения: я просто хочу объявить на уровне интерфейса, что мой репозиторий имеет порядок, даже если он явно не указан ключом. Таким образом, . Затем et.al. не следует добавлять новый заказ, так как он уже есть - мой единственный. :-). Я вижу, что таким образом я пропускаю намерение .ThenBy .

11
задан Marcel 25 March 2011 в 10:09
поделиться