我有一个矩形数组,我想按尺寸降序排序.然后我想选择前10并在另一个接收矩形数组的函数中使用它.以下是我的代码.但是,当我转换回数组时,我得到了"至少有一个对象必须实现IComparable"的例外.有人可以指导我.
Rectangle[] BoundingBoxes = GetRectangles(param1, param2);
IEnumerable<Rectangle> BoundingBoxesSorted = BoundingBoxes.OrderByDescending(
item => item.Size).Take(10);
Rectangle[] BoundingBoxes10 = BoundingBoxesSorted.Cast<Rectangle>().ToArray();
Run Code Online (Sandbox Code Playgroud)
那是因为System.Drawing.Size(类型Rectangle.Size)没有实现IComparable.这是有道理的,因为对于数字元组没有自然排序,例如(Width, Height):会(10, 5)小于(7, 8)?
选择可比较的东西(例如只是Width区域或区域Width * Height),或者将自定义IComparer作为第二个参数传递.