About listing fields
The IGeoProcessor2 interface does not provide a method to directly access the fields of a feature class or table since fields can be listed by ArcObjects from the Geodatabase library conveniently. The IGPUtilities3 interface of the Geoprocessing library provides three methods to access fields of a GPValue object.
The following code example shows how to get the fields of a feature class with the Fields property and FindField method of the IFeatureClass interface, then use the Calculate Field geoprocessing tool to update the values of the NEW_YIELD field with the values from the MODEL_YIELD field:
public void FieldsFromIFeatureClass(IGeoProcessor2 gp, IFeatureClass fc)
{
IFields fields = fc.Fields;
IVariantArray parameters = new VarArrayClass();
object sev = null;
int fieldIndex1 = fields.FindField("NEW_YIELD");
int fieldIndex2 = fields.FindField("MODEL_YIELD");
if ((fieldIndex1 > - 1) && (fieldIndex2 > - 1))
{
parameters.Add(fc);
parameters.Add("NEW_YIELD");
parameters.Add("!MODEL_YIELD!");
parameters.Add("PYTHON_9.3");
gp.Execute("CalculateField_management", parameters, null);
Console.WriteLine(gp.GetMessages(ref sev));
}
}
[VB.NET]
Public Sub testFieldsFromIFeatureClass(ByVal gp As IGeoProcessor2, ByVal fc As IFeatureClass)
Dim fields As IFields = fc.Fields
Dim parameters As IVariantArray = New VarArray
Dim sev As Object = Nothing
Dim fieldIndex1 = fields.FindField("NEW_YIELD")
Dim fieldIndex2 = fields.FindField("MODEL_YIELD")
If ((fieldIndex1 > -1) And (fieldIndex2 > -1)) Then
parameters.Add(fc)
parameters.Add("NEW_YIELD")
parameters.Add("!MODEL_YIELD!")
parameters.Add("PYTHON_9.3")
gp.Execute("CalculateField_management", parameters, Nothing)
Console.WriteLine(gp.GetMessages(sev))
End If
End Sub
You can also use the methods on the IGPUtilities3 interface to work with Field objects if you have a GPValue object. The GetOutput method of an IGeoProcessorResult object returns an IGPValue object. Thus, you always get a GPValue object from the result of tool execution if the output is a feature class.
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
ESRI.ArcGIS.Geoprocessing ESRI.ArcGIS.Geodatabase ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)