如何使用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排序,我在这里缺少什么?
答案 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();