【问题标题】:Sorting in datatable在数据表中排序
【发布时间】:2011-09-21 00:18:03
【问题描述】:

我有一个数据库类中的记录列表

D1.1: First
D2.12: second
D1.14: third
D2.8: fourth
D2.2: fifth
D2.3: fifth
D1.7: fifth
D2: fifth
D1.5: fifth

考虑到 D 的代码,如 1.1、2.12,我应该如何排序。 1.14 等?

所需的输出应如下所示。

D1.1: First  
D1.14: third  
D1.5: fifth
D1.7: fifth    
D2: fifth
D2.12: second
D2.2: fifth
D2.3: fifth
D2.8: fourth

【问题讨论】:

  • 为什么D1.14D1.5之后,而D2.12D2.2之前?一次(对于 D1)您似乎是在按数字排序,另一次(对于 D2)您似乎是在对字符串进行排序......你真正想要什么???
  • 是的,你是对的。修改了输出。
  • +1 用于更正输出。谢谢 marc_s

标签: c# sorting datatable


【解决方案1】:

从您的帖子中不清楚数据在实际表中的具体情况,但如果它在这样格式化的字段中,那么您可以使用 SUBSTRING 对其进行排序。这是一个例子:

DECLARE @test AS TABLE (
data varchar(50)
)

INSERT @test VALUES ('D1.1: First')
INSERT @test VALUES ('D2.12: second')
INSERT @test VALUES ('D1.14: third')
INSERT @test VALUES ('D2.8: fourth')
INSERT @test VALUES ('D2.2: fifth')
INSERT @test VALUES ('D2.3: fifth')
INSERT @test VALUES ('D1.7: fifth')
INSERT @test VALUES ('D2: fifth')
INSERT @test VALUES ('D1.5: fifth')

SELECT data FROM @test
ORDER BY SUBSTRING(data,2,CHARINDEX(':',data,0)-2)

结果:

data
--------------------------------------------------
D1.1: First
D1.14: third
D1.5: fifth
D1.7: fifth
D2: fifth
D2.12: second
D2.2: fifth
D2.3: fifth
D2.8: fourth

【讨论】:

  • 如果您觉得没有帮助,请投反对票。我确实阅读了这个问题并理解您在谈论 C# 中的数据表,但我的观点是,从您的原始问题来看,尚不清楚数据是如何保存或最初构造的。我获取信息的方法是在 SQL 中对数据进行排序,从而首先使用正确格式的数据填充数据表。如果数据表不是从 SQL 语句填充的,那么显然这对您没有好处。
  • 不,我们只有前端的记录。因此,进入数据库是没有意义的。这就是为什么我没有包含其他标签!我只需要在前端做。
  • 抱歉,我对这个建议不感兴趣。
  • 它没有考虑数值。对这种方法不感兴趣。它会产生错误。
猜你喜欢
  • 2013-02-16
  • 2011-09-09
  • 2018-08-16
  • 2018-11-26
  • 1970-01-01
  • 2020-07-12
相关资源
最近更新 更多