2014-09-25 90 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}