forked from yanw/App_win_iot_V2.0
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
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
|
|
}
|
|
}
|
|
|