我正在使用VS 2008,C#,Sqlite和ObjectListView。我有一个查询数据库的方法(使用datareader)然后返回List并分配给其他List。为什么当我调用该方法并重新分配给List时,它需要越来越多的时间来重新分配,即使我清除或将其设置为null。我用秒表测试它。首先分配它需要大约300毫秒,第二分配大约800毫秒,第三分配大于1000毫秒,并继续上升。顺便说一句,对不起我的英语。
public static List<Document> GetCompanyDocument(int companyId)
{
List<Document> docs = new List<Document>();
using (IDSDataAccess.IDSDataSqlite db = new IDSDataAccess.IDSDataSqlite())
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT document.*, prep.userInitial AS userPrep, Rev.userInitial AS userInitial ")
.Append("FROM document ")
// more sql command
.Append("WHERE document.compId = @compId ")
.Append("ORDER BY parent ASC, name ASC;");
db.CommandText = sb.ToString();
db.AddParameter("@compId", DbType.Int32, companyId);
db.CommandType = CommandType.Text;
db.Open();
db.ExecuteReader();
using (System.Data.SQLite.SQLiteDataReader reader = db.DbDataReader as SQLiteDataReader)
{
if (reader.HasRows)
{
while (reader.Read())
{
Document doc = new Document();
// do more action
docs.Add(doc);
}
}
if (reader != null)
{
if (!reader.IsClosed)
{
reader.Close();
reader.Dispose();
}
}
}
sb.Remove(0, sb.Length);
sb = null;
db.Close();
}
return docs;
}
// Other method
List<Document> docs = GetCompanyDocument(1);