Функция Import Entity Framework упорядочена - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь отсортировать gridview с моим objectdatasource, который использует функцию import (сохраненный процесс) из моей модели сущностей.Руководство, которому я следовал, было от http://www.asp.net/web-forms/tutorials/continuing-with-ef/using-the-entity-framework-and-the-objectdatasource-control-part-3-sorting-and-filtering

Который имеет этот код:

public IEnumerable<Department> GetDepartments(string sortExpression)
    {
        if (String.IsNullOrWhiteSpace(sortExpression))
        {
            sortExpression = "Name";
        }
        return context.Departments.Include("Person").OrderBy("it." + sortExpression).ToList();
    }

Как я могу сделать OrderBy, если я вызываю хранимый процесс?* Мой код:

  If String.IsNullOrWhiteSpace(sortExpression) Then
                sortExpression = "Status"
            End If

            retReq = dataContext.usp_GetReport(Nothing, Nothing, Nothing, period, Nothing, Nothing, _
                            Nothing, Nothing, Nothing).ToList()

Есть идеи?Заранее спасибо

Обновление - Разрешение

Я уверен, что в моем случае есть лучший способ заставить функционирование сортировки работать.Но это метод, который я сделал, он работает, но если кто-нибудь может помочь мне упростить его, пожалуйста, дайте мне знать спасибо.

Получено из документации MSDN http://msdn.microsoft.com/en-us/library/bb534966(v=vs.96).aspx#Y1200

If sortExpression IsNot Nothing Then
                If sortExpression = "StatusDate DESC" Then
                    retReq = dataContext.usp_GetReport(Nothing, Nothing, Nothing, period, Nothing, Nothing, _
                       Nothing, Nothing, Nothing).OrderByDescending(Function(test As usp_GetReport_Result) test.StatusDate).ToList()

                ElseIf sortExpression = "StatusDate" Then
                    retReq = dataContext.usp_GetReport(Nothing, Nothing, Nothing, period, Nothing, Nothing, _
                       Nothing, Nothing, Nothing).OrderBy(Function(test As usp_GetReport_Result) test.StatusDate).ToList()

                End If
End If

1 Ответ

0 голосов
/ 01 марта 2012

Либо 1) сортировка внутри хранимой процедуры, либо 2) сортировка возвращаемых данных с использованием Linq для объектов.

например,

var sorted = retReq.OrderBy(x=>x.SomeProperty);

, очевидно, 2) будет сортировать результатычто может быть не тем, что вам требуется, если, например, ваш sproc возвращает top (n).

...