Filtering and Sorting Lists of Objects

When retrieving jobs, tasks, and nodes, you can filter and sort the results. The following C# and C++ examples show how to filter the nodes that you want to retrieve.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Hpc.Scheduler;
using Microsoft.Hpc.Scheduler.Properties;

namespace Filtering_and_Sorting_Lists_of_Objects
    class Program
        static void Main(string[] args)
            IScheduler scheduler = new Scheduler();
            ISchedulerCollection nodes = null;
            IFilterCollection filters = null;
            ISortCollection sortOn = null;


                // Specify the filter criteria.
                filters = scheduler.CreateFilterCollection();
                filters.Add(FilterOperator.GreaterThanOrEqual, PropId.Node_NumCores, 1);
                filters.Add(FilterOperator.HasBitSet, PropId.Node_State, NodeState.Online);

                // Specify the sort criteria
                sortOn = scheduler.CreateSortCollection();
                sortOn.Add(SortProperty.SortOrder.Ascending, PropId.Node_NumCores);
                sortOn.Add(SortProperty.SortOrder.Descending, PropId.Node_CpuSpeed);

                // Get the list of nodes that match the filter criteria
                // and return them in the specified sort order.
                nodes = scheduler.GetNodeList(filters, sortOn);

                if (nodes.Count > 0)
                    Console.WriteLine("Nodes matching filter criteria:");
                    Console.WriteLine("Name\t\tCores\tCPU Speed\tMemory");
                    foreach (ISchedulerNode node in nodes)
                        Console.WriteLine("{0}\t{1}\t{2:f2} GHz\t{3:f2} GB",
                            node.Name, node.NumberOfCores, node.CpuSpeed / 1000.0, node.MemorySize / 1000.0);
                    Console.WriteLine("No nodes match the filter criteria.");
            catch (Exception e)

Related topics

Using HPC