如何讓我的Comparer考慮負數? 知道它排序我的字符串中的數字,但它留下減號(「減法」)的標誌。所以我得到了錯誤的輸出,看下面的代碼。排序字符串中的數字(數組)
public class MixedNumbersAndStringsComparer : IComparer<string>
{
public int Compare(string x, string y)
{
double xVal, yVal;
if (double.TryParse(x, out xVal) && double.TryParse(y, out yVal))
return xVal.CompareTo(yVal);
else
return string.Compare(x, y);
}
}
實際輸出:
0 DAG(E)5時間(R) - XX - XX
3 DAG(E)3時間(R) - XX - XX
-4 DAG(E)-17時間(R) - XX - XX
-6 DAG(E)-18時間(R) - XX - XX
8 DAG(E)1周時間(R) - XX - XX
8 DAG(E)4時間(R) - XX - XX
預期輸出是:
- 6 DAG(E)-18時間(R) - XX - XX
-4 DAG(E)-17時間(R) - XX - XX
0 DAG(E)5時間(R) - xx - xx
3 DAG(E)3時間(R) - XX - XX
8 DAG(E)1周時間(R) - XX - XX
8 DAG(E)4時間(R) - XX - XX
輸入數據是:
TimeSpan tidtilbage = timeToExpire.GetTimeRemainingUntilPasswordExpiration("DOMAIN", p.SamAccountName);
TimeSpan under10 = new TimeSpan(10, 00, 00, 00);
TimeSpan ikkeMinus10 = new TimeSpan(-10, 00, 00, 00);
if (tidtilbage < under10 && tidtilbage > ikkeMinus10)
{
if (u.Enabled == true)
{
string lines = tidtilbage.Days + " dag(e) "
+ tidtilbage.Hours + " time(r)" + " - "
+ p.SamAccountName.ToUpper() + " - " + p.DisplayName + "\n\n";
sorted[i] = lines;
Array.Sort(sorted, new MixedNumbersAndStringsComparer());
i++;
}
}
這是有點不清楚;輸出如何與程序片斷相關並不明顯。請修改。 – Bathsheba
您能否提供預期的行爲和實際的行爲?例如。預期的「-1」>「-5」,實際的「-1」<「-5」 –
而且,給我們真實的輸入值。你在比較「-4」和「-17」還是「-4 dag(e)」和「-17 time(r)」? – Pikoh