Feedback

C# - Versionsnummern vergleichen

Veröffentlicht von am 03.11.2009
(2 Bewertungen)
Prüft ob eine Versionsnummer kleiner gleich einer anderen ist
        /// <summary>
        /// Prüft ob eine Versionsnummer kleiner gleich einer anderen ist
        /// </summary>
        /// <param name="versionToCompare">Versionsnummer die kleiner/gleich sein soll</param>
        /// <param name="versionToCompareWith">Versionsnummer</param>
        /// <returns></returns>
        public static bool IsVersionNumberLowerOrEqual(string versionToCompare, string versionToCompareWith)
        {
            string[] versionSeperator = new string[] { "." };
            List<string> versionToCompareParts = versionToCompare.Split(versionSeperator, StringSplitOptions.RemoveEmptyEntries).ToList();
            List<string> versionToCompareWithParts = versionToCompareWith.Split(versionSeperator, StringSplitOptions.RemoveEmptyEntries).ToList();
            int maxVersionPartLength = Math.Max(versionToCompareParts.Max(s => s.Length), versionToCompareWithParts.Max(s => s.Length));

            // alle Versionsteile mit 000 auffüllen (damit x.3.x > x.23.x)
            for (int i = 0; i < versionToCompareParts.Count; i++)
                versionToCompareParts[i] = Int32.Parse(versionToCompareParts[i]).ToString().PadRight(maxVersionPartLength, '0');
            for (int i = 0; i < versionToCompareWithParts.Count; i++)
                versionToCompareWithParts[i] = Int32.Parse(versionToCompareWithParts[i]).ToString().PadRight(maxVersionPartLength, '0');

            // versionnummern alla 3.0 nach 3.0.0.0 ändern .. 
            for (int i = versionToCompareParts.Count; i < versionToCompareWithParts.Count; i++)
                versionToCompareParts.Add("0".PadRight(maxVersionPartLength, '0'));
            for (int i = versionToCompareWithParts.Count; i < versionToCompareParts.Count; i++)
                versionToCompareWithParts.Add("0".PadRight(maxVersionPartLength, '0'));


            for (int i = 0; i < versionToCompareParts.Count; i++)
            {
                int valCW = Int32.Parse(versionToCompareWithParts[i]);
                int val = Int32.Parse(versionToCompareParts[i]);
                if (valCW > val) return true;
                else if (valCW < val) return false;
            }
            return true;
        }
Abgelegt unter Version, Versionsnummer.

2 Kommentare zum Snippet

Konstantin Gross schrieb am 04.11.2009:
Du hast es komplizierter gemacht als es ist ;-)

http://msdn.microsoft.com/en-us/library/a5ts8tb6.aspx
Janko schrieb am 04.11.2009:
D'oh! ^^
 

Logge dich ein, um hier zu kommentieren!