Пример #1
0
        /// <summary>
        /// Copy attribute fields only.
        /// </summary>
        /// <param name="rowSrc"></param>
        /// <param name="rowDest"></param>
        public void CopyFieldsValue(IRow rowSrc, IRow rowDest)
        {
            IFields fieldsSrc  = rowSrc.Fields;
            IFields fieldsDest = rowDest.Fields;

            IField fieldSrc;
            IField fieldDest;

            int inxFieldSrc = -1;

            Func <IRow, int, object> funcConvertValue;

            // Loop Dest fields
            for (int i = 0; i < fieldsDest.FieldCount; i++)
            {
                fieldDest = fieldsDest.Field[i];

                if (!fieldDest.Editable)
                {
                    continue;
                }
                if (SkipFields.Contains(fieldDest.Name.ToUpper()))
                {
                    continue;
                }

                inxFieldSrc = fieldsSrc.FindField(fieldDest.Name);
                if (inxFieldSrc != -1)
                {
                    if (!DictConvertRowFieldValueFunc.ContainsKey(fieldDest.Name.ToUpper()))
                    {
                        rowDest.Value[i] = rowSrc.Value[inxFieldSrc];
                    }
                    else
                    {
                        funcConvertValue = DictConvertRowFieldValueFunc[fieldDest.Name.ToUpper()];
                        rowDest.Value[i] = funcConvertValue(rowSrc, inxFieldSrc);
                    }
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Copy ShapeField Value, support source IRow, IFeature
 /// </summary>
 /// <param name="rowSrc"></param>
 /// <param name="ftDest"></param>
 public void CopyShapeFieldValue(IRow rowSrc, IFeature ftDest)
 {
     if (!DictConvertRowFieldValueFunc.ContainsKey(ShapeFieldName.ToUpper()))
     {
         if (rowSrc is IFeature)
         {
             IFeature ftSrc = rowSrc as IFeature;
             ftDest.Shape = ftSrc.Shape;
         }
         else
         {
             // src is table (don't have geometry)
             // do nothing
         }
     }
     else
     {
         var funcConvertValue = DictConvertRowFieldValueFunc[ShapeFieldName.ToUpper()];
         int inxShapeField    = rowSrc.Fields.FindField(ShapeFieldName);
         ftDest.Shape = funcConvertValue(rowSrc, inxShapeField) as IGeometry;
     }
 }