我正在使用比较器对文本列表进行排序。每个列表项都包含纯文本:
public class NameComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x == null && y == null) return 0;
if (x == null || y == null) return -1;
var parts1 = x.Split();
var parts2 = y.Split();
if (parts1.Length > 1 && parts2.Length > 1)
{
if (parts1[0] != parts2[0]) return parts1[0].CompareTo(parts2[0]);
if (x.Contains("ptt") && y.Contains("ptt"))
return parts1[5].CompareTo(parts2[5]);
else if (x.Contains("ptt"))
return parts1[5].CompareTo(parts2[11]);
else if (y.Contains("ptt"))
return parts1[11].CompareTo(parts2[5]);
else
return parts1[11].CompareTo(parts2[11]);
}
return x.CompareTo(y);
}
}
这个比较器排序很好,但我需要进行二次排序。 例如 而不是这个:
- 2045< start FC 79812
- 2027< Slot 4 start FC 79812
- 2048< Slot 4 start FC 79812
- 2071< Slot 4 start FC 79812
- 2070< Slot 4 start FC 79812
- 2069< Slot 4 start FC 79812
- 2045< Slot 5 end FC 79812
- 2051< Slot 5 end FC 79812
- 2056< Slot 5 end FC 79812
我需要它像这样排序:
- 2045< start FC 79812
- 2045< Slot 5 end FC 79812
- 2027< Slot 4 start FC 79812
- 2048< Slot 4 start FC 79812
- 2071< Slot 4 start FC 79812
- 2070< Slot 4 start FC 79812
- 2069< Slot 4 start FC 79812
- 2051< Slot 5 end FC 79812
- 2056< Slot 5 end FC 79812
在'fc'之后的数字后,我需要按'&lt;'
之前的数字排序