OraFields クラスは、OraField クラスのコレクションクラスです。

Dictionary と List を使って管理します。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;

namespace OracleInProcServer.NET
{
    public class OraFields : IEnumerable, IEnumerable<OraField>
    {
        int m_Count;
        Dictionary<string, OraField> m_Dictionary;
        List<OraField> m_List;

        internal OraFields(OraDynaset dyn, DataColumnCollection dcc) {
            m_Count = dcc.Count;
            m_Dictionary = new Dictionary<string, OraField>();
            m_List = new List<OraField>();

            for (int i = 0; i < m_Count; i++) {
                DataColumn dc = dcc[i];
                OraField f = new OraField(dyn, dc.ColumnName, i);
                m_Dictionary.Add(dc.ColumnName, f);
                m_List.Add(f);
            }
        }

        public int Count {
            get { return m_Count; }
        }

        IEnumerator IEnumerable.GetEnumerator() {
            return m_List.GetEnumerator();
        }

        IEnumerator<OraField> IEnumerable<OraField>.GetEnumerator() {
            return m_List.GetEnumerator();
        }

        public OraField this[int index] {
            get { return m_List[index]; }
        }

        public OraField this[string name] {
            get {
                OraField f;
                if (m_Dictionary.TryGetValue(name, out f)) {
                    return f;
                }
                for (int i = 0; i < m_List.Count; i++) {
                    f = m_List[i];
                    if (string.Compare(name, f.Name, true) == 0) {
                        return f;
                    }
                }
                throw new IndexOutOfRangeException();
            }
        }
    }
}



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-03-19 (火) 22:48:31 (2409d)