排序版本包含两个不同小数位的版本

时间:2014-09-25 22:13:06

标签: c# sql sorting

目前,我使用Selenium从网站获取Release Version,并将其存储为字符串。

发布版本为14.1414.14.414.1514.15.114.15.2等。

我需要使用C#对它们进行排序,并且数据库管理员需要能够使用SQL对它们进行排序。所有Release Version项目当前都存储为字符串。

如果重要的话,我会使用LINQ to SQL执行所有SQL操作。

在C#和SQL中对它们进行排序的最佳方法是什么?作为字符串?或者我应该转换它们?转换它们时会使用哪种数据类型?

2 个答案:

答案 0 :(得分:2)

在C#中,您可以将它们存储为(或至少转换为)Version,这也支持正确的排序:

var strings = new List<string> { "14.14", "14.14.4", "14.15", "14.15.1", "14.15.2" };
var versions = strings.Select(v => Version.Parse(v)).ToList();
versions.Sort();  // or OrderBy in the LINQ query above

这是一个显示如何对数据库中的版本进行排序的问题:How Can I Sort A 'Version Number' Column Generically Using a SQL Server Query

答案 1 :(得分:1)

如果您可以来回转换它,那么将版本转换为int。由于版本最多有3个部分,只需将其转换为{0} * 10000 + {1} * 100 + {2}