【问题标题】:Apply Sorting On DataTable with where clause使用 where 子句对 DataTable 应用排序
【发布时间】:2013-04-22 06:39:29
【问题描述】:

我有一个DataTable。我想使用 C# Sort 函数对列应用排序。 但我只想排序将特定值的那些行应用到其他列(不是应用排序的列)但未过滤表数据。 我怎么能做这件事。

例如 - 我的DataTable dt

列第一(实体)||第二列(位置)

候选人                 || 0

员工                  ||印度

候选人                  || 2

员工                  ||英国

候选人                || 3

员工                ||中国

应用排序后,我希望我的DataTable 看起来像这样(排序仅将那些只有“员工”的字段应用到第一列,并且在对“候选人”或排序后的“员工”显示在Datatable 中进行排序之后)

排序后我的预期结果是这样的 -

列第一(实体)||第二列(位置)

候选人                 || 0

员工                ||中国

候选人                  || 2

员工                  ||英国

候选人                || 3

员工                  ||印度

非常感谢您的宝贵帮助。

【问题讨论】:

  • 您想要在这里实现的功能到底是什么?基于此,也许数据表中的设计更改会更有帮助。
  • 我想要这个,因为我的第二列数据表有两种类型的值,对于员工第二列的意思是“员工位置”,如果是候选人,我的第二列有“绩效评级”。所以我希望当我根据“位置”应用排序时,我的数据是根据 Employee-location 而不是 Performance-Rating 排序的。但是在这里我对候选人或员工都有相同的列,我不能直接在“第二列”上应用排序,因为它给出了不正确的结果。因此,当根据“位置”应用排序时,它仅适用于员工记录,候选人记录不受此影响。谢谢
  • 这实际上需要两个数据表 - 第一个具有候选、评级列。第二个应该有列员工,位置。然后您可以更灵活地进行操作。

标签: c# asp.net c#-4.0 data-binding datatable


【解决方案1】:

您必须为此使用 DataView,DataView 是可排序的。将您的 Datatable dt 分配给 DataView 并使用 DataView 的 Sort 属性

DataView dv = dt.DefaultView;
dv.Sort = "Column name";

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多