【发布时间】:2013-04-11 23:22:57
【问题描述】:
我有一个包含数百列的表(例如 FirstName 和 LastName)。
所有这些数据都显示为带有列表的GridView。我已经使用了具有e.SortExpression 的SortCommand 事件,但是我无法理解如何在OrderBy 函数中使用它,因为在输入了一个lambda 表达式之后。 IntelliSense 向我显示所有数百列,而不是我需要的那一列 - 我只在运行时拥有。
我如何使用OrderBy 函数期望我的Func<TSource, TKey> 选择器让它知道字符串e.SortExpression 是需要排序的列?
我的基本意思的例子:
private void dataGrid_SortCommand(object source, DataGridSortCommandEventArgs e)
{
var users = new UsersEntities().UsersTable.OrderBy(x => "x."+e.SortExpression);
FillDataGrid(users);
}
更新: 我已经明白,我希望实现这一点的方式是使用表达式树,我希望有人可以提供确切的解决方案。
更新 2: 我找到了解决方案here。原来我的问题是重复的,而且措辞很糟糕。谢谢大家。
而且我也刚刚注意到 ken 提供了非常确凿的证据表明我应该使用动态 linq。将来我会考虑这样做,但我不禁注意到尝试表达式树而不是依赖库为我做这些是多么有趣。在这个阶段,由于我还是表达式树的新手,这是一个利用它们的绝佳机会。
【问题讨论】: