C# 对绑定到Linq查询的GridView进行排序

C# 对绑定到Linq查询的GridView进行排序,c#,asp.net,linq,gridview,C#,Asp.net,Linq,Gridview,我有一个使用Linq查询填充的GridView var usersToApprove = from rl in QVDash.Permisisons join u in QVDash.Userson rl.UserId equals u.UserId join d in QVDash.Dashboards on rl.DashboardId equals d.DashboardId

我有一个使用Linq查询填充的GridView

var usersToApprove = from rl in QVDash.Permisisons
                           join u in QVDash.Userson rl.UserId equals u.UserId
                           join d in QVDash.Dashboards on rl.DashboardId equals d.DashboardId 
                           where (u.ApprovedBy == approverId || isGod)
                           select new
                           {
                               PermissionId = rl.PermissionId,
                               Name = u.Name,
                               Area = u.Area,
                               Dashboard = d.DashboardName,
                               OpUnit = rl.Operational_Unit,
                               Cost_Centre = rl.Cost_Centre,
                               Fund = rl.Fund,
                               Project = rl.Project,
                               Approver = (from a in QVDash.Users where a.UserId == u.UserId && a.UserId == u.ApprovedBy select a.Name).FirstOrDefault()
                           };

        grd_CurrentUsers.DataSource = usersToApprove ;
        grd_CurrentUsers.DataKeyNames = new string[] { "PermissionId" };
        grd_CurrentUsers.DataBind();
但是,这带来了一个问题,GridView不允许排序

我已经尝试了一些选项,我发现这些选项需要构建一个定制的排序函数,但是我发现这充其量只是粗略的,比如:只有单向排序,分页重置排序等等

我想知道的是,是否有更好的方法来做到这一点


我知道将gridview绑定到数据源可以解决排序问题,但是我不知道如何将我的Linq绑定到数据源。可能吗?

您是否尝试过LinqDataSource控件?查看此链接

关键部分:“要处理自定义查询场景,您可以实现一个事件处理程序来处理控件上的“选择”事件。在此事件处理程序中,您可以编写任何要检索数据模型结果的代码。”


这允许您使用自定义LINQ查询进行排序、分页等。

最终使用此站点的排序代码解决了这个问题

上面的代码是如何命名的?顺便说一句,没有必要在标题中添加“(ASP.NET C#)”之类的内容。这就是标签的作用。@John我这样做是因为我看到人们得到错误的回答,因为人们不看标签。人们可以使用标签过滤出他们不感兴趣的问题,并用正确的标签突出显示问题,我建议您使用标签而不是标题。标题没有这两个功能。@Nix我所做的是从几个地方将其作为方法调用,然后该方法运行上述代码,并使用.DataSouce和.DataBind将输出绑定到gridview。我这样做是为了在更改GridView时对其进行更新我正在使用Linq to Entities:/