{
// This routine demonstrates how to get the associations involved in an upward traversal from a set of starting elements, up to a specified depth limit
static void GetTraverseAssociationsResultFromUpwardTraversalWithDepthLimit(UtilityNetwork utilityNetwork, IReadOnlyList<Element> startingElements)
{
// List of fields whose values will be fetched as name-values pairs during association traversal operation
List<string> additionalFieldsToFetch =
new List<string> { "ObjectId", "AssetName", "AssetGroup", "AssetType" };
// Set downward traversal with maximum depth level of 3
TraverseAssociationsDescription traverseAssociationsDescription =
new TraverseAssociationsDescription(TraversalDirection.Ascending, 3)
{
AdditionalFields = additionalFieldsToFetch
};
// Get traverse associations result from the staring element up to depth level 3
TraverseAssociationsResult traverseAssociationsResult =
utilityNetwork.TraverseAssociations(startingElements, traverseAssociationsDescription);
// List of associations participated in traversal
IReadOnlyList<Association> associations = traverseAssociationsResult.Associations;
// KeyValue mapping between involved elements and their field name-values
IReadOnlyDictionary<Element, IReadOnlyList<FieldValue>> associationElementValuePairs =
traverseAssociationsResult.AdditionalFieldValues;
foreach (KeyValuePair<Element, IReadOnlyList<FieldValue>> keyValuePair in associationElementValuePairs)
{
// Element
Element element = keyValuePair.Key;
// List of field names and their values
IReadOnlyList<FieldValue> elementFieldValues = keyValuePair.Value;
}
}
}