Синтаксическая ошибка при выполнении OrderBy <T>в списке IEnumerable. - PullRequest
1 голос
/ 23 июня 2010

Я получаю сообщение об ошибке:

Как минимум один объект должен реализовывать IComparable

Код, вызывающий это ниже:

private static IEnumerable<Result> setOrderBy(IEnumerable<Result> value, string order)
{
    if (order.Equals("ASC"))
    {
        //value = value.OrderBy(c => c, new SearchService.ResultComparer<Attribute>());
        value = value.OrderBy<Result>(o => o.StringAttributes.Where(p => p.AttributeName == "Title"), new SearchService.ResultComparer<Attribute>());
        //value = value.OrderBy(o => o.StringAttributes.Where(p => p.AttributeName == "Title"), new SearchService.ResultComparer<AttributeItem>()));
    }
    if (order.Equals("DESC"))
    {
        value = value.OrderByDescending(c => c, new SearchService.ResultComparer<Attribute>());
        //value = value.OrderByDescending(o => o.StringAttributes.Where(p => p.AttributeName == "MatterName"));
    }
    return value;
}

Немного предыстории: Вмое приложение MVC2, я выполняю поиск в моем контроллере поиска.Когда я отправляю свои результаты в представление «Результаты», я пытаюсь упорядочить результаты в алфавитном порядке, в порядке возрастания или убывания.Однако, когда я записываю логику для установки свойства OrderBy для моего объекта результата, я получаю волнистую красную линию под кодом (как видно из VS2008).По какой-то причине этому методу не нравится модель данных, с которой я пытаюсь разобраться.Каждый объект Result имеет различные свойства, одним из которых является список атрибутов типа string (отсюда и имя StringAttributes). Я пытаюсь отсортировать каждый объект Result в моей коллекции IEnumerable по значению одного из атрибутов String, присутствующего в ALL.моих записей результатов.

Помогите пожалуйста!

1 Ответ

2 голосов
/ 23 июня 2010

Я думаю, вам нужно использовать First() или Single вместо Where() в том месте, где вы выбираете Attribute для заказа.В данный момент вы просите OrderBy рассчитать заказ, используя IEnumerable<Attribute>, а не определенный атрибут.

...