Asp.net 为什么赢了';绑定后,这个实体序列是否在GridView中排序?

Asp.net 为什么赢了';绑定后,这个实体序列是否在GridView中排序?,asp.net,entity-framework,gridview,linq-to-entities,Asp.net,Entity Framework,Gridview,Linq To Entities,我创建的这个序列在LINQPad中运行良好 IQueryable<AccessRequest> filteredRows1; // retrieve the last record of each request in its request history filteredRows1 = from req in AccessRequestSet group req by req.TaskReferenceId into g let topReq = g.Or

我创建的这个序列在LINQPad中运行良好

IQueryable<AccessRequest> filteredRows1;
// retrieve the last record of each request in its request history
filteredRows1 = from req in AccessRequestSet
    group req by req.TaskReferenceId
    into g
    let topReq = g.OrderByDescending(r => r.UpdateDate).FirstOrDefault()
    select topReq;

IQueryable<AccessRequest> filteredRows = 
    filteredRows1.Where(o => o.Status == "Requested");
我再次成功地按一个日期时间分组,然后成功地按另一个日期时间排序,在LINQPad中确认。然后,我将其添加为数据源并绑定到我的GridView:

gvRequests.DataSourceID = string.Empty;
            gvRequests.DataSource = filteredRows;
            gvRequests.DataBind();
我甚至设置了AllowSorting=“true”,并将这一行添加到排序中

gvRequests.Sort("RequestedReleaseTime", SortDirection.Ascending);

在数据绑定之前和之后,我都尝试了最后一行,但都没有用。这种方法有什么问题?我应该在OnSorted或OnSorting事件中执行这些操作吗?注意:我试过了,得到了StackOverflowException,这提醒我应该问问你们。感谢您给我的指导或帮助。

调用
OrderBy
实际上并没有修改原始查询,而是基于原始查询返回一个新查询,您需要选择:

var filteredRowsOrdered = filteredRows.OrderBy(p => p.RequestedReleaseTime);

我相信gridview的“sort”是用来处理ObjectDataSource之类的东西的,它知道调用一个方法来检索数据,并将排序字符串传递给该方法。不幸的是,这在实体框架中不能很好地工作。我们已经想出了一些技巧,让我们的数据访问类知道如何将排序表达式转换为
q=q.OrderBy(…)
语句。但它可能很复杂。

很好,就像字符串一样,它们是不可变的。实际上,我在应用程序中使用了修改后的查询。上面的代码来自我在LINQPad中所做的测试。我希望有一个明显的修复方法。@Blanthor:如果您将数据源设置为有序查询(在我的示例中是FilteredRoworder),那么它应该正确排序。
var filteredRowsOrdered = filteredRows.OrderBy(p => p.RequestedReleaseTime);