2014-09-25 85 views
1

目前,我从使用Selenium的网站获取Release Version,并将其存储为字符串。包含两个不同小数位的排序版本版本

发行版是14.1414.14.414.1514.15.114.15.2

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

我做我所有的SQL使用LINQ to SQL的东西,如果重要的话。

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

+1

为避免必须在C#和SQL中编写排序代码,您可以开始保存版本的固定宽度编号为'014.015.001',所以词汇排序在两者中都很自然,但显然你可能不想要或不能控制它。 – AaronLS 2014-09-25 22:16:04

+0

在C#中,您可以提供一个自定义的IComparer。 http://msdn.microsoft.com/en-us/library/bb534863.aspx – user2880486 2014-09-25 22:25:18

回答

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

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

相关问题