对IFeatureClass的选择结果进行再次选择及排序

最近需要对IFeatureClass的选择结果进行再次选择,并对再次选择的结果按照两个属性进行排序操作。于是先用IFeatureClass.Select方法进行第一次选择,将选择的结果用ISelectionSet类型变量SelectionSet1存放。然后需要对SelectionSet1中的要素进行再次选择,并且对选择结果进行排序,这时候问题就来了:用ISelectionSet.Search方法进行查询选择并排序时,如果在IQueryFilter.WhereClause选择语句后面加上排序词(order by xxx)就会报错:SQL命令未正确结束。

问题:ISelectionSet.Search方法进行选择不支持按属性排序

原因:未搞清,疑为AE不支持或者自己方法不正确

解决方法:将第二次查询结果SelectionSet1.Select通过ISelectionSet变量SelectionSet2进行存储,然后使用ITableSort接口对SelectionSet2中的数据进行按属性值排序。代码如下:

ISelectionSet SelectionSet2= emptySelSet.Select(queryFilter,esriSelectionType.esriSelectionTypeHybrid,esriSelectionOption.esriSelectionOptionNormal,null);//存储第二次查询结果

string strSortField = "CARID,TIME";//排序所需属性
ITableSort pTableSort = new TableSort();
pTableSort.SelectionSet = SelectionSet2;//排序数据源输入
pTableSort.Fields = strSortField;
pTableSort.set_Ascending(strSortField,true);//选择升序排列
pTableSort.Sort(null);

IFeatureCursor emptyLineFeaCursor = pTableSort.Rows as IFeatureCursor;//排序结果输出 

  

原文地址:https://www.cnblogs.com/lettet/p/4329038.html