按大小排序矩形数组

Sid*_*Sid 0 c# linq

我有一个矩形数组,我想按尺寸降序排序.然后我想选择前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)

Mat*_*ens 5

那是因为System.Drawing.Size(类型Rectangle.Size)没有实现IComparable.这是有道理的,因为对于数字元组没有自然排序,例如(Width, Height):会(10, 5)小于(7, 8)

选择可比较的东西(例如只是Width区域或区域Width * Height),或者将自定义IComparer作为第二个参数传递.