IComparable 的实现不排序

Implementation of IComparable not ordering

我在尝试对 Thickness class 上的数据进行排序时收到错误 "At least one object must implement IComparable",但我很难理解如何使用 IComparable 在这种情况下实现排序。或者,老实说,它甚至是什么。这是我的 class 实现了 IComparable,但没有排序。任何指导将一如既往地受到赞赏。

public class ColourMatrix
{
    public List<Item> Items { get; set; }

    public class Item
    {
        public Colour Colours { get; set; }
        public List<Thickness> Thicknesses { get; set; }
    }

    public class Colour
    {
        public string Name { get; set; }
    }

    public class Thickness : IComparable<Thickness>
    {
        public int CompareTo(Thickness that)
        {
            return this.Measurement.CompareTo(that.Measurement);
        }

        public int Measurement { get; set; }
        public int StandardColour { get; set; } = 1;
    }
}

我需要这样排序数据。

var orderedItems = published.Items
    .OrderBy(n => n.Colours.Name)
    .ThenBy(t => t.Thicknesses.Select(x => x.Measurement));

就输出而言,这是它呈现的内容,它是需要排序的 4、2、1、3。

        | 4 | 2 | 1 | 3 |
red     | x |   |   |   |
green   | x |   | x | x |
blue    | x | x |   |   |

应该是

        | 1 | 2 | 3 | 4 |
red     |   |   |   | x |
green   | x |   | x | x |
blue    |   | x |   | x |

其中 x = StandardColour 属性 值

听起来您并不是要订购商品 - 而是更改 Thicknesses 属性 的内容,以便所有厚度都是 本身 为了。您将分别对每个项目执行此操作。例如:

foreach (var item in published.Items)
{
    item.Thicknesses = item.Thicknesses.OrderBy(t => t.Measurement).ToList();
}