功能导入实体框架orderby

时间:2012-03-01 17:31:15

标签: function gridview frameworks import entity

我正在尝试使用我的objectdatasource对 gridview 进行排序,该对象使用来自我的实体模型的函数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 :(得分:0)

无论哪种 1)在存储过程内排序,或 2)使用Linq将返回的数据排序到对象。

e.g。

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

显然2)将对结果进行排序,这可能不是你需要的,例如你的sproc返回顶部(n)。