ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMExpressionInfo Class / ReturnType Property
Example

In This Topic
    ReturnType Property
    In This Topic
    Gets or sets the ReturnType of the expression.
    Syntax
    public ExpressionReturnType ReturnType {get; set;}
    Public Property ReturnType As ExpressionReturnType
    Example
    Basic Query
    //Consult https://github.com/Esri/arcade-expressions/ and
    //https://developers.arcgis.com/arcade/ for more examples
    //and arcade reference
    
    QueuedTask.Run(() =>
    {
      //construct an expression
      var query = @"Count($layer)";//count of features in "layer"
    
      //construct a CIMExpressionInfo
      var arcade_expr = new CIMExpressionInfo()
      {
        Expression = query.ToString(),
        //Return type can be string, numeric, or default
        //When set to default, addin is responsible for determining
        //the return type
        ReturnType = ExpressionReturnType.Default
      };
    
      //Construct an evaluator
      //select the relevant profile - it must support Pro and it must
      //contain any profile variables you are using in your expression.
      //Consult: https://developers.arcgis.com/arcade/profiles/
      using (var arcade = ArcadeScriptEngine.Instance.CreateEvaluator(
                              arcade_expr, ArcadeProfile.Popups))
      {
        //Provision  values for any profile variables referenced...
        //in our case '$layer'
        var variables = new List<KeyValuePair<string, object>>() {
            new KeyValuePair<string, object>("$layer", featLayer)
          };
        //evaluate the expression
        try
        {
          var result = arcade.Evaluate(variables).GetResult();
          System.Diagnostics.Debug.WriteLine($"Result: {result.ToString()}");
        }
        //handle any exceptions
        catch (InvalidProfileVariableException ipe)
        {
          //something wrong with the profile variable specified
          //TODO...
        }
        catch (EvaluationException ee)
        {
          //something wrong with the query evaluation
          //TODO...
        }
    
      }
    });
    
    Basic Query using Features
    //Consult https://github.com/Esri/arcade-expressions/ and
    //https://developers.arcgis.com/arcade/ for more examples
    //and arcade reference
    
    QueuedTask.Run(() =>
    {
      //construct an expression
      var query = @"$feature.AreaInAcres * 43560.0";//convert acres to ft 2
    
      //construct a CIMExpressionInfo
      var arcade_expr = new CIMExpressionInfo()
      {
        Expression = query.ToString(),
        //Return type can be string, numeric, or default
        //When set to default, addin is responsible for determining
        //the return type
        ReturnType = ExpressionReturnType.Default
      };
    
      //Construct an evaluator
      //select the relevant profile - it must support Pro and it must
      //contain any profile variables you are using in your expression.
      //Consult: https://developers.arcgis.com/arcade/profiles/
      using (var arcade = ArcadeScriptEngine.Instance.CreateEvaluator(
                              arcade_expr, ArcadeProfile.Popups))
      {
        //we are evaluating the expression against all features
        using (var rc = featLayer.Search())
        {
    
          while (rc.MoveNext())
          {
            //Provision  values for any profile variables referenced...
            //in our case '$feature'
            var variables = new List<KeyValuePair<string, object>>() {
              new KeyValuePair<string, object>("$feature", rc.Current)
            };
            //evaluate the expression (per feature in this case)
            try
            {
              var result = arcade.Evaluate(variables).GetResult();
              var val = ((double)result).ToString("0.0#");
              System.Diagnostics.Debug.WriteLine(
                $"{rc.Current.GetObjectID()} area: {val} ft2");
            }
            //handle any exceptions
            catch (InvalidProfileVariableException ipe)
            {
              //something wrong with the profile variable specified
              //TODO...
            }
            catch (EvaluationException ee)
            {
              //something wrong with the query evaluation
              //TODO...
            }
          }
        }
      }
    });
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also