private List<SyndicationItem> CreateItemCollection(RecordSet results, GeoRSSExportProperties feedProperties)
        {
            List<SyndicationItem> items = new List<SyndicationItem>();
            ICursor cursor;
            SimpleGeometryFactory simpleFactory = new SimpleGeometryFactory();
            GMLGeometryFactory gmlFactory = new GMLGeometryFactory();

            try
            {
                //create a feed item for each record
                cursor = results.get_Cursor(false);

                Exporter.logger.LogMessage(ESRI.ArcGIS.SOESupport.ServerLogger.msgType.infoStandard, "CreateItemCollection", 999999, "Cursor Set");
                IRow row = cursor.NextRow();

                int rowCount = 0;

                if (row != null)
                {
                    while (row != null)
                    {
                        //on the first row log out the field name and field alias
                        if (rowCount == 0)
                        {
                            for (int r = 0; r < row.Fields.FieldCount; r++)
                            {
                                IField field = row.Fields.get_Field(r);

                                Exporter.logger.LogMessage(ESRI.ArcGIS.SOESupport.ServerLogger.msgType.infoDetailed,
                                "CreateItemCollection",
                                999999,
                                "field Name: " + field.Name +
                                " field alias: " + field.AliasName
                                );
                            }
                        }

                        SyndicationItem item = new SyndicationItem();

                        //set the item properties
                        foreach (KeyValuePair<string, GeoRSSExportItem> itemConfig in feedProperties.Items)
                        {
                            GeoRSSExportItem itemExportProperty = itemConfig.Value;

                            if (itemExportProperty != null)
                            {
                                SetItemValues(row, ref item, itemConfig, itemExportProperty);

                            }

                        }

                        //process the geometry

                        int fieldIndex = row.Fields.FindField(feedProperties.GeometryField);

                        if (fieldIndex == -1)
                            throw new Exception("Could not locate geometry field:" + feedProperties.GeometryField);

                        if (row.get_Value(fieldIndex) != null)
                        {
                            IGeometry geom = row.get_Value(fieldIndex) as IGeometry;
                            GeoRSSGeometry geometry = null;
                            switch (feedProperties.GetGeoRSSGeomtryType())
                            {
                                case GeoRSSGeometryFormat.Simple:
                                    geometry = simpleFactory.GetGeometry(geom);
                                    break;
                                case GeoRSSGeometryFormat.GML:
                                    geometry = gmlFactory.GetGeometry(geom);
                                    break;
                                default:
                                    break;
                            }

                            if (geom != null)
                                item.ElementExtensions.Add(geometry.GeometryAsXML);
                        }

                        items.Add(item);

                        row = cursor.NextRow();

                        rowCount++;

                    }
                }
                return items;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                cursor = null;
            }
        }