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();
}
我在尝试对 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();
}