Порядок/список фигур Visio по размеру в массиве фигур

Я добавил фигуры Visio в массив форм. Я пытаюсь перечислить фигуры Visio по размеру. Как упорядочить по возрастанию/убыванию?

Shape[] VisioShape = new Shape[0];
int Count = 0
foreach (Shape shape in VisioPage.Shapes)
{
if (shape.OneD != 0)
 { 
   VisioShape[Count] = shape;
   Count++;
 }  
}

person Rizan J    schedule 04.10.2016    source источник


Ответы (1)


Как насчет LINQ? Ниже приведен краткий фрагмент, который я написал в LinqPad (согласно этому сообщению: http://visualsignals.typepad.co.uk/vislog/2015/12/getting-started-with-c-in-linqpad-with-visio.html< /а>)

void Main()
{
    var vApp = MyExtensions.GetRunningVisio();

    Visio.Page vPag = vApp.ActivePage;
    var q = from s in vPag.Shapes.Cast<Visio.Shape>()
            where s.OneD == 0
            orderby s.CellsU["Height"].ResultIU
            select s.Text;
    q.Dump();
}

Учитывая некоторые формы, подобные этой:

фигуры Visio

Linqpad возвращает это:

введите здесь описание изображения

Если вы хотите заказать в другом направлении, просто добавьте descending в конце строки заказа:

orderby s.CellsU["Height"].ResultIU descending
person JohnGoldsmith    schedule 04.10.2016