You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

174 lines
4.5 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace IOTContainer.SQLite
{
/// <summary>
/// 字段信息列表
/// </summary>
public class SQLiteColumnList : IList<SQLiteColumn>
{
#region 构造函数
public SQLiteColumnList()
{
this._columns = new List<SQLiteColumn>();
}
#endregion
#region 字段属性
/// <summary>
/// 字段信息集合
/// </summary>
private List<SQLiteColumn> _columns;
/// <summary>
/// 获取设置字段信息
/// </summary>
/// <param name="index">索引</param>
/// <returns>字段信息</returns>
public SQLiteColumn this[int index]
{
get
{
return this._columns[index];
}
set
{
if (this._columns[index].ColumnName != value.ColumnName)
{
CheckColumnName(value.ColumnName);
}
this._columns[index] = value;
}
}
/// <summary>
/// 字段信息数量
/// </summary>
public int Count
{
get { return this._columns.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
#endregion
#region 外部函数
/// <summary>
/// 获取字段信息下标
/// </summary>
/// <param name="item">字段信息</param>
/// <returns>下标</returns>
public int IndexOf(SQLiteColumn item)
{
return this._columns.IndexOf(item);
}
/// <summary>
/// 插入字段信息
/// </summary>
/// <param name="index">下标</param>
/// <param name="item">字段信息</param>
public void Insert(int index, SQLiteColumn item)
{
CheckColumnName(item.ColumnName);
this._columns.Insert(index, item);
}
/// <summary>
/// 移除字段信息
/// </summary>
/// <param name="index">下标</param>
public void RemoveAt(int index)
{
this._columns.RemoveAt(index);
}
/// <summary>
/// 添加字段信息
/// </summary>
/// <param name="item">字段信息</param>
public void Add(SQLiteColumn item)
{
CheckColumnName(item.ColumnName);
this._columns.Add(item);
}
/// <summary>
/// 是否包含字段信息
/// </summary>
/// <param name="item">字段信息</param>
/// <returns>true:是,false:否</returns>
public bool Contains(SQLiteColumn item)
{
return this._columns.Contains(item);
}
/// <summary>
/// 复制字段信息
/// </summary>
/// <param name="array">字段信息数组</param>
/// <param name="arrayIndex">其实位置</param>
public void CopyTo(SQLiteColumn[] array, int arrayIndex)
{
this._columns.CopyTo(array, arrayIndex);
}
/// <summary>
/// 移除字段信息
/// </summary>
/// <param name="item">字段信息</param>
/// <returns>true:是,false:否</returns>
public bool Remove(SQLiteColumn item)
{
return this._columns.Remove(item);
}
/// <summary>
/// 获取迭代器
/// </summary>
/// <returns>迭代器</returns>
public IEnumerator<SQLiteColumn> GetEnumerator()
{
return this._columns.GetEnumerator();
}
/// <summary>
/// 获取迭代器
/// </summary>
/// <returns>迭代器</returns>
IEnumerator IEnumerable.GetEnumerator()
{
return this._columns.GetEnumerator();
}
/// <summary>
/// 清理
/// </summary>
public void Clear()
{
this._columns.Clear();
}
#endregion
#region 内部函数
/// <summary>
/// 检查列名
/// </summary>
/// <param name="colName">列名</param>
private void CheckColumnName(string colName)
{
if (this._columns.FirstOrDefault(x => x.ColumnName == colName) != null)
throw new Exception("Column name of \"" + colName + "\" is already existed.");
}
#endregion
}
}