C#List <t>重新分配时速度较慢

时间:2017-05-17 19:57:59

标签: c# list sqlite visual-studio-2008

我正在使用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);

0 个答案:

没有答案