C#比较器按次值排序

时间:2016-03-30 07:25:38

标签: c# comparator string-comparison

我正在使用比较器对文本列表进行排序。每个列表项都包含纯文本:

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;'

之前的数字排序

0 个答案:

没有答案