public 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
//At 2.x - IReadOnlyDictionary<Element, IReadOnlyList<AssociationElementFieldValue>> associationElementValuePairs = traverseAssociationsResult.AdditionalFieldValues;
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
//At 2.x - IReadOnlyList<AssociationElementFieldValue> elementFieldValues = keyValuePair.Value;
IReadOnlyList<FieldValue> elementFieldValues = keyValuePair.Value;
}
}