///获取所有字段及每个字段的唯一值
public static List<string> getFieldsList(IFeatureLayer pFeatureLayer)
{
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
int num = pFeatureClass.FeatureCount(null);
List<string> returnlist = new List<string>();
List<string> plist = ArcGISClassPub.getFieldList(pFeatureClass);
int num2 = plist.Count;
List<string> result;
try
{
for (int i = 0; i < num2; i++)
{
if (ArcGISClassPub.GetUniqueValue(pFeatureClass, plist[i]).Count == num)
{
returnlist.Add(plist[i]);
}
}
result = returnlist;
}
finally
{
}
return result;
}
///遍历所有字段
public static List<string> getFieldList(IFeatureClass pFeatureClass)
{
IFields pField = pFeatureClass.Fields;
int num = pField.FieldCount;
List<string> plist = new List<string>();
List<string> parcgisfieldlist = new List<string>();
parcgisfieldlist.Add("SHAPE");
parcgisfieldlist.Add("Shape_Length".ToUpper());
parcgisfieldlist.Add("Shape_Area".ToUpper());
for (int i = 0; i < num; i++)
{
IField myField = pField.get_Field(i);
string fieldname = myField.Name.ToUpper();
if (parcgisfieldlist.IndexOf(fieldname) == -1)
{
plist.Add(myField.Name);
}
}
parcgisfieldlist.Clear();
return plist;
}
///获取指定字段的唯一值
public static List<string> GetUniqueValue(IFeatureClass pFeatureClass, string strFld)
{
List<string> list = new List<string>();
IFeatureCursor pCursor = pFeatureClass.Search(null, false);
IDataStatistics pData = new DataStatisticsClass();
pData.Field = strFld;
pData.Cursor = (pCursor as ICursor);
IEnumerator pEnumVar = pData.UniqueValues;
int uniqueValueCount = pData.UniqueValueCount;
pEnumVar.Reset();
while (pEnumVar.MoveNext())
{
object obj = pEnumVar.Current;
list.Add(obj.ToString());
}
return list;
}