Упорядочить / перечислить фигуры Visio по размеру в массиве фигур

#c# #visio

#c# #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  ;
 }  
}
  

Ответ №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:

 orderby s.CellsU["Height"].ResultIU descending