如何使用LINQ对客户端类型的DataTable进行排序

时间:2009-12-30 16:11:04

标签: linq gridview sorting datatable

如何使用LINQ在客户端对DataTable进行排序? (我的数据存储不支持服务器端排序)

我正在做这样不起作用的事情

IEnumerable<DataRow> dr = GetDataTableData().AsEnumerable();

           if (sortDirection == "Ascending")
                        {
                            dr = dr.OrderBy(x => sortExpression);
                        }
                        else
                        {
                            dr = dr.OrderByDescending(x => sortExpression);
                        }

                GridView1.DataSource = dr;
                GridView1.DataBind();

但是我根本没有看到gridview排序,我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

我的猜测是sortExpression是一个传递给方法的字符串;你应该对x中的某些东西进行排序。例如:

dr = dr.OrderBy(x => x.FirstName);

正如Rory在评论中指出的那样,你可以在你的案例中使用x [sortExpression];如果您使用的是对象而不是DataRow,则可以创建一个键选择器表达式并将其传递给OrderBy();类似的东西:

Func<IDataRow, string> sortExpressionReal = x => x["FirstName"].ToString();

然后你的OrderBy看起来像:

dr = dr.OrderBy(sortExpressionReal);

答案 1 :(得分:0)

你必须使用linq吗?您可以使用DataViews轻松完成此操作 DataView vw = new DataView(dtbl,“filter”,“FirstName DESC”,DataViewRowState.CurrentRows); GridView1.DataSource = VW; GridView1.DataBind();