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;
}
2 Kommentare zum Snippet