C# 比较格式为1.0.1和1.0的两个十进制数字

C# 比较格式为1.0.1和1.0的两个十进制数字,c#,string,decimal,C#,String,Decimal,我需要使用c#比较两个strings,其格式如下所示: numbers.numbers[.numbers]* 例如 请注意,1.0应等于1.0.0,1.00,1.000.0.00等-后面的所有零块不计算在内 我试着用Decimal string1 = "1.0"; string2 = "1.0.1"; if (Convert.ToDecimal(string1) <= Convert.ToDecimal(string2)) { // Perfom some log

我需要使用c#比较两个
string
s,其格式如下所示:

numbers.numbers[.numbers]*
例如

请注意,
1.0
应等于
1.0.0
1.00
1.000.0.00
等-后面的所有零块不计算在内

我试着用
Decimal

string1 = "1.0";   
string2 = "1.0.1"; 

if (Convert.ToDecimal(string1) <= Convert.ToDecimal(string2))    
{
   // Perfom some logic
}
string1=“1.0”;
string2=“1.0.1”;

如果(Convert.ToDecimal(string1)看起来您是在寻找类,而不是
String

  Version v1 = new Version("1.0");
  Version v2 = new Version("1.0.1");

  if (v1 <= v2) {
    //TODO: Put relevant code here 
  }
结果将是

result = 1 - version1 is greater
result = -1 - version2 is greater
result = 0 - both are equal

什么是
1.0.1
?如果你要求别人借你
1.0.1$
,你希望得到多少?好的,那么如何比较这些数字?首先你必须定义排序器。根据这一点,你可以使用内置或自定义排序。我已经尝试过这个版本。但是它可以正常工作,或者在这种情况下,但在下面的情况下失败,Strug1=1 Strug2= 1.0.0。如果条件为(Strug1@天际:对于<代码>期望的结果是什么?”1“< /代码>和<代码>”1.0“< /代码>比较”,在IF条件下,1和1.0.0应该被认为是相等的。谢谢您执行的版本逻辑。好的,让我试试这个。上面的逻辑会考虑“1”和“1.0.0”吗?相等?在您的情况下使用版本时,“1.0”和“1.0.0”不相等。您希望返回什么?谢谢,版本逻辑工作正常。
private static string TrimVersion(string value) {
  string result = Regex.Replace(value, @"(\.0+)+$", "");

  if (result.Contains('.'))
    return result;
  else
    return result + ".0";
}

...

Version v1 = new Version(TrimVersion("1.0"));
Version v2 = new Version(TrimVersion("1.0.0"));

if (v1 <= v2) {
  //TODO: Put relevant code here 
}
string string1 = "1.0";
string string2 = "1.0.1";

var version1 = new Version(string1);
var version2 = new Version(string2);

var result = version1.CompareTo(version2);
result = 1 - version1 is greater
result = -1 - version2 is greater
result = 0 - both are equal