我正在尝试使用我的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
答案 0 :(得分:0)
无论哪种 1)在存储过程内排序,或 2)使用Linq将返回的数据排序到对象。
e.g。
var sorted = retReq.OrderBy(x=>x.SomeProperty);
显然2)将对结果进行排序,这可能不是你需要的,例如你的sproc返回顶部(n)。