ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / BasicFeatureLayer Class / InsertDefinitionQuery Method
A DefinitionQuery object.
A boolean to indicate it should be the active definition query.
Example

In This Topic
    InsertDefinitionQuery Method (BasicFeatureLayer)
    In This Topic
    Inserts a DefinitionQuery. If makeActive is true, makes it the active definition query. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Sub InsertDefinitionQuery( _
       ByVal definitionQuery As DefinitionQuery, _
       Optional ByVal makeActive As Boolean _
    ) 
    public void InsertDefinitionQuery( 
       DefinitionQuery definitionQuery,
       bool makeActive
    )

    Parameters

    definitionQuery
    A DefinitionQuery object.
    makeActive
    A boolean to indicate it should be the active definition query.
    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    A definition query with the same name already exists in the list.
    Where clause of the definitionQuery is empty.
    Remarks
    The DefinitionQuery.Name of the definitionQuery cannot already exist in the list of DefinitionQueries. When Name is empty, an automatically generated name gets assigned.The DefinitionQuery.WhereClause cannot be empty.
    Example
    Querying a feature layer with a spatial filter
    {
        var layers = map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
        var layerToQuery = layers.FirstOrDefault(f => f.Name == "USNationalParks");
        if (layerToQuery == null) return;
    
        string whereClause = "RecreationVisitsTotal > 1000000"; //More than million visitors a year
    
        var spatialDefnLayer = layers.FirstOrDefault(f => f.Name == "AllUSStates");
        if (spatialDefnLayer == null) return;
        try
        {
            if (MapView.Active == null) return;
            //Note: needs to be called on the MCT
            // Set the spatial filter geometry
            //Get the geometry from the selected features in the feature layer
            var spatialClauseGeom = spatialDefnLayer.GetFeatureOutline(MapView.Active, FeatureOutlineType.Selected);
            //Create the definition query
            DefinitionQuery definitionQuery = new DefinitionQuery
            {
                WhereClause = whereClause,
                Name = $"{layerToQuery.Name}"
            };
            //Setting the spatial filter to the Definition Query
            if (definitionQuery.CanSetFilterGeometry(spatialClauseGeom))
            {
                definitionQuery.SetFilterGeometry(spatialClauseGeom);
            }
    
            layerToQuery.InsertDefinitionQuery(definitionQuery);
            layerToQuery.SetActiveDefinitionQuery(definitionQuery.Name);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine($"Error querying feature layer: {ex.Message}");
        }
    }
    Apply A Definition Query Filter to a Feature Layer
    {
        var us_parks = map.GetLayersAsFlattenedList()
      .OfType<FeatureLayer>().First(l => l.Name == "USNationalParks");
        //Note: needs to be called on the MCT
        var def_query = new DefinitionQuery("CaliforniaParks",
                          "STATE_ABBR = 'CA'");
    
        us_parks.InsertDefinitionQuery(def_query);
        us_parks.SetDefinitionQuery("STATE_ABBR = 'CA'");
    
        //Set it active
        us_parks.SetActiveDefinitionQuery(def_query.Name);
    
        //or....also - set it active when it is inserted
        //us_parks.InsertDefinitionQuery(def_query, true);
    }
    Apply A Definition Query Filter With a Filter Geometry to a Feature Layer
    {
        var greatLakes = map.GetLayersAsFlattenedList()
              .OfType<FeatureLayer>().First(l => l.Name == "Great Lakes");
        var usa_states = map.GetLayersAsFlattenedList()
        .OfType<FeatureLayer>().First(l => l.Name == "US_States");
        //name must be unique
        var def_query = new DefinitionQuery("GreatLakes",
                              "NAME in ('Huron','Michigan','Erie')");
    
        //create a filter geometry - in this example we will use the outline geometry
        //of all visible features from a us states layer...the filter geometry will be
        //intersected with the layer feature geometry when added to the def query
        var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.Visible);
        //other options...
        //var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.All);
        //var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.Selected);
    
        //Geometry must have a valid SR and be point, multi-point, line, or poly
        //Note: needs to be called on the MCT
        if (def_query.CanSetFilterGeometry(filter_geom))
        {
            def_query.SetFilterGeometry(filter_geom);
        }
    
        //Apply the def query
        greatLakes.InsertDefinitionQuery(def_query);
        //Set it active
        greatLakes.SetActiveDefinitionQuery(def_query.Name);
    
        //or....also - set it active when it is inserted
        //greatLakes.InsertDefinitionQuery(def_query, true);
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also