System.Xml.XPathNodePointer.PreviousColumn C# (CSharp) Method

PreviousColumn() private method

private PreviousColumn ( DataRow row, DataColumn col, bool fAttribute ) : DataColumn
row System.Data.DataRow
col System.Data.DataColumn
fAttribute bool
return System.Data.DataColumn
        internal DataColumn PreviousColumn(DataRow row, DataColumn col, bool fAttribute)
        {
            if (row.RowState == DataRowState.Deleted)
                return null;

            DataTable table = row.Table;
            DataColumnCollection columns = table.Columns;
            int iColumn = (col != null) ? col.Ordinal - 1 : columns.Count - 1;
            int cColumns = columns.Count;
            DataRowVersion rowVersion = (row.RowState == DataRowState.Detached) ? DataRowVersion.Proposed : DataRowVersion.Current;

            for (; iColumn >= 0; iColumn--)
            {
                DataColumn c = columns[iColumn];
                if (!_doc.IsNotMapped(c) && (c.ColumnMapping == MappingType.Attribute) == fAttribute && !Convert.IsDBNull(row[c, rowVersion]))
                    return c;
            }

            return null;
        }