どのようにして、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