#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();
}
Учитывая некоторые фигуры, подобные этому:
Linqpad возвращает это:
Если вы хотите упорядочить в другом направлении, просто добавьте descending
в конец строки orderby:
orderby s.CellsU["Height"].ResultIU descending