<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Is it possible to use the .NET runtime SDK to query multiple layers of a feature service at once? in .NET Maps SDK Questions</title>
    <link>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279441#M3285</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm looking to use the &lt;A href="http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#//02r3000000w5000000"&gt;Feature Service Query API&lt;/A&gt;, and query multiple layers at once.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, building off the example on the query API page, I want the query to look something like this:&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://" rel="nofollow" target="_blank"&gt;http://&lt;/A&gt;&lt;SPAN&gt;&amp;lt;featureservice-url&amp;gt;/query?layerDefs=[{"layerId":&amp;lt;layerDef1&amp;gt;},{"layerId":&amp;lt;layerDef2&amp;gt;}]&amp;amp;geometry=&amp;lt;geometry&amp;gt;&amp;amp;f=json&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I can't seem to be able to figure out how to get that through the .NET runtime SDK (without resorting to using an ArcGISHttpClient).&amp;nbsp; Any suggestions?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Apr 2015 15:24:00 GMT</pubDate>
    <dc:creator>meme2</dc:creator>
    <dc:date>2015-04-16T15:24:00Z</dc:date>
    <item>
      <title>Is it possible to use the .NET runtime SDK to query multiple layers of a feature service at once?</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279441#M3285</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm looking to use the &lt;A href="http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#//02r3000000w5000000"&gt;Feature Service Query API&lt;/A&gt;, and query multiple layers at once.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, building off the example on the query API page, I want the query to look something like this:&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://" rel="nofollow" target="_blank"&gt;http://&lt;/A&gt;&lt;SPAN&gt;&amp;lt;featureservice-url&amp;gt;/query?layerDefs=[{"layerId":&amp;lt;layerDef1&amp;gt;},{"layerId":&amp;lt;layerDef2&amp;gt;}]&amp;amp;geometry=&amp;lt;geometry&amp;gt;&amp;amp;f=json&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I can't seem to be able to figure out how to get that through the .NET runtime SDK (without resorting to using an ArcGISHttpClient).&amp;nbsp; Any suggestions?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Apr 2015 15:24:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279441#M3285</guid>
      <dc:creator>meme2</dc:creator>
      <dc:date>2015-04-16T15:24:00Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to use the .NET runtime SDK to query multiple layers of a feature service at once?</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279442#M3286</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The QueryTask class works against a single layer in a service, whereas the IdentifyTask and FindTask work against multiple layers in a service. It sounds like you might be able to use the IdentifyTask in your case, to provide a geometry filter which will return all features in layers from the service which intersect the geometry?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Samples for the query task classes (Find / Identify / Query): &lt;A href="https://github.com/Esri/arcgis-runtime-samples-dotnet/tree/master/src/Desktop/ArcGISRuntimeSDKDotNet_DesktopSamples/Samples/QueryTasks" title="https://github.com/Esri/arcgis-runtime-samples-dotnet/tree/master/src/Desktop/ArcGISRuntimeSDKDotNet_DesktopSamples/Samples/QueryTasks"&gt;arcgis-runtime-samples-dotnet/src/Desktop/ArcGISRuntimeSDKDotNet_DesktopSamples/Samples/QueryTasks at master · Esri/arcg…&lt;/A&gt;​​&lt;/P&gt;&lt;P&gt;- API ref for the Tasks.Query namespace (&lt;A href="https://developers.arcgis.com/net/desktop/api-reference//html/N_Esri_ArcGISRuntime_Tasks_Query.htm" title="https://developers.arcgis.com/net/desktop/api-reference//html/N_Esri_ArcGISRuntime_Tasks_Query.htm"&gt;Esri.ArcGISRuntime.Tasks.Query Namespace&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Depending on your exact workflow, you might also like to look at the ServiceFeatureTable Query method: &lt;A href="https://developers.arcgis.com/net/desktop/api-reference//html/M_Esri_ArcGISRuntime_Data_ArcGISFeatureTable_QueryAsync.htm" title="https://developers.arcgis.com/net/desktop/api-reference//html/M_Esri_ArcGISRuntime_Data_ArcGISFeatureTable_QueryAsync.htm"&gt;ArcGISFeatureTable.QueryAsync Method (QueryFilter)&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mike &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Apr 2015 12:57:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279442#M3286</guid>
      <dc:creator>MichaelBranscomb</dc:creator>
      <dc:date>2015-04-17T12:57:11Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to use the .NET runtime SDK to query multiple layers of a feature service at once?</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279443#M3287</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Michael!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With the IdentifyTask, can I return certain fields along with the feature (like the outFields query parameter)?&amp;nbsp; I'm looking to pull in a bunch of data from a feature service as quickly as possible.&amp;nbsp; So, I'd rather not query every layer individually.&amp;nbsp; Plus, I need certain fields on the features returned.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I did write a quick wrapper around the feature service query:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class QueryEntry
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly int _layerId;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly string _whereClause;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly string _outFields;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public QueryEntry(int layerId, string whereClause, string outFields)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _layerId = layerId;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _whereClause = whereClause;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _outFields = outFields;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [JsonProperty("layerId")]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int LayerId { get { return _layerId; } }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [JsonProperty("where")]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string WhereClause { get { return _whereClause; } }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [JsonProperty("outFields")]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string OutFields { get { return _outFields; } }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class QueryOperation
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly IEnumerable&amp;lt;QueryEntry&amp;gt; _queries;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly Esri.ArcGISRuntime.Geometry.Geometry _geometry;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly SpatialReference _inSpatialReference;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly SpatialReference _outSpatialReference;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public QueryOperation(IEnumerable&amp;lt;QueryEntry&amp;gt; queries,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Esri.ArcGISRuntime.Geometry.Geometry geometry = null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SpatialReference inSpatialReference = null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SpatialReference outSpatialReference = null)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _queries = queries;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _geometry = geometry;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inSpatialReference = inSpatialReference;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _outSpatialReference = outSpatialReference;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override string ToString()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var edits = JsonConvert.SerializeObject(_queries);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var options = new StringBuilder();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_geometry != null) { options.Append(String.Format("&amp;amp;geometry={0}&amp;amp;geometryType=esriGeometry{1}", _geometry.ToJson(), _geometry.GeometryType)); }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_inSpatialReference != null) { options.Append(String.Format("&amp;amp;inSR={0}", _inSpatialReference.ToJson())); }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_outSpatialReference != null) { options.Append(String.Format("&amp;amp;outSR={0}", _outSpatialReference.ToJson())); }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return String.Format("layerDefs={0}{1}&amp;amp;f=pjson", edits, options);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;P&gt;And then it can be used like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var client = new ArcGISHttpClient();
var queryEntries = new List&amp;lt;QueryEntry&amp;gt;();
// Generate QueryEntries
var queryOp = new QueryOperation(queryEntries, geometry);
var content = new StringContent(queryOp.ToString());
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
var result = await client.PostAsync(service.Uri + "/query", content);
var json = await result.Content.ReadAsStringAsync();&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That seems to give me what I want, but it feels like I'm rewriting something that already exists in the .NET runtime SDK.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:34:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/is-it-possible-to-use-the-net-runtime-sdk-to-query/m-p/279443#M3287</guid>
      <dc:creator>meme2</dc:creator>
      <dc:date>2021-12-11T13:34:52Z</dc:date>
    </item>
  </channel>
</rss>

