TypeAccessException при сортировке с использованием RIA Services и Telerik RadGridView

Я использую RadGrid в приложении SL, используя сервисы RIA/MVVM.

В моей модели представления у меня есть коллекция IEnumerable, которая отлично работает при простом отображении коллекции:

public IEnumerable<Orders> OrderList
    {
        get
        {
            return datacontext.Orders;
        }
    }

Однако, когда я пытаюсь отсортировать коллекцию до ее привязки (следующим образом), я получаю сообщение об ошибке «Сообщение: System.typeaccessexception Attempt by method DynamicClass.lambda .....», и приложение зависает:

public IEnumerable<Orders> OrderList
    {
        get
        {
            return  datacontext.Orders.OrderBy(o=>o.OrderDate);
        }
    }

Можете ли вы посоветовать, как выставить отсортированные данные, не вызывая этой проблемы?


person user918064    schedule 29.08.2011    source источник
comment
Можете ли вы вставить полное исключение?   -  person Jeff    schedule 29.08.2011


Ответы (1)


Вы можете добавить вызов .ToArray() или .ToList() в конец запроса LINQ, например:

public IEnumerable<Orders> OrderList
    {
        get
        {
            return  datacontext.Orders.OrderBy(o=>o.OrderDate).ToList();
        }
    }
person Luke Woodward    schedule 29.08.2011
comment
Ответ можно было бы улучшить, если бы было объяснено, почему это помогает? Так почему же .ToList() решает проблему? - person AnthonyWJones; 30.08.2011
comment
@AnthonyWJones: я согласен, что мой ответ был бы лучше, если бы я мог объяснить, почему. Честно говоря, я не мог понять смысла полученного сообщения об ошибке, в котором упоминались лямбда-методы и System.Linq.OrderedEnumerable (не IOrderedEnumerable). Я предполагаю, что это сообщение об ошибке совпадает с тем, что получил OP. Если вы знаете больше, вы можете опубликовать альтернативный ответ. - person Luke Woodward; 30.08.2011
comment
У меня нет альтернативы, ваш ответ хорош. Я думаю, что могу догадаться, что происходит, но я подумал, что у вас может быть более определенная причина. - person AnthonyWJones; 30.08.2011
comment
Спасибо, я связал toList(), но тогда в сетке ничего не появляется? - person user918064; 30.08.2011