2016-03-31 28 views
1

我想比较组中的3个号码。如何比较在C#.net中分成3组的字符串?

string first = "1.0.1"; 
string second = "1.0.0"; 
string third = "2.1.0"; 
string forth = "1.1.0"; 

这些都是版本。我想从中获得最高版本。目前第三=“2.1.0”是最高的。

有人可以建议我最短的路吗?或者我应该做自定义编码?

+0

你试过什么方法? –

+0

如何使用[SemVer](https://github.com/xyncro/semver.net)? – Oliver

回答

5

尝试Version类是专门为此而设计的,e.g:

string first = "1.0.1"; 
string second = "1.0.0"; 

if (new Version(first) > new Version(second)) { 
    ... 
} 

你的情况

// "2.1.0" 
    String biggest = new String[] { 
     first, second, third, forth } 
    .Max(item => new Version(item)) 
    .ToString(); 
2

可以使用Version类,它可以让你比较版本找到最高。

例如,

List<Version> versions = new List<Version>(); 
versions.Add(new Version("1.0.1")); 
versions.Add(Version("1.0.0")); 
versions.Add(Version("2.1.0")); 
versions.Add(Version("1.1.0")); 

现在,您可以对列表进行排序,并获得最高的价值:

versions.Sort(); 
var highestVersion = versions.First(); 
3

为什么不使用Version类型?这实现了IComparable接口,所以如果你有它们的集合,你可以使用LINQ表达式来获得最大的值。

Version first = new Version(1, 0, 1); 
Version second = new Version(1, 0, 0); 
Version third = new Version(2, 1, 0); 
Version fourth = new Version(1, 1, 0); 

List<Version> versions = new List<Version>() { first, second, third, fourth }; 
Version maximumVersion = versions.Max(); // returns the 'third' object 
+1

版本也有一个字符串构造函数。除此之外,我最喜欢这个,因为它支持集合,并且不需要修改它以获得最大版本。 –