2016-03-31 6 views
1

Ich möchte 3 Zahlen, die in der Gruppe sind, vergleichen.Wie wird die Zeichenkette, die in 3 Gruppen unterteilt ist, in C# .net verglichen?

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

Dies sind alle Versionen. Ich möchte die höchste Version davon bekommen. Derzeit ist drittes = "2.1.0" am höchsten.

Kann mir jemand den kürzesten Weg vorschlagen? oder sollte ich benutzerdefinierte Codierung tun?

+0

Welchen Ansatz haben Sie ausprobiert? –

+0

Wie wäre es mit [SemVer] (https://github.com/xyncro/semver.net)? – Oliver

Antwort

5

Versuchen Version Klasse, die speziell für diesen Zweck ausgelegt ist, beispiels:

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

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

in Ihrem Fall

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

Sie die Version Klasse verwenden können, die Sie Versionen der höchsten finden vergleichen lässt.

Eg.

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")); 

Jetzt können Sie die Liste sortieren und den höchsten Wert erhalten:

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

Warum nicht verwenden, um den Version Typen? Dies implementiert die IComparable-Schnittstelle. Wenn Sie also eine Sammlung von ihnen haben, können Sie einen LINQ-Ausdruck verwenden, um den größten Wert zu erhalten.

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

Version hat auch einen String-Konstruktor. Abgesehen davon mag ich das am meisten, da es Sammlungen unterstützt und es nicht modifizieren muss, um die maximale Version zu erhalten. –