C# 减少将数据集转换为给定对象列表所需的时间

C# 减少将数据集转换为给定对象列表所需的时间,c#,sql,stored-procedures,foreach,C#,Sql,Stored Procedures,Foreach,我有一个返回数据集的存储过程。我调试并注意到执行存储过程并不需要太多时间 但我需要将返回的数据集分配给对象集合 我已经在下面展示了我是如何做到这一点的。 当我调试时,我注意到执行foreach循环需要相当长的时间 var ds = Handler.GetDataSetFromSP(); foreach (DataRow row in ds.Tables[0].Rows) { MyModel

我有一个返回数据集的存储过程。我调试并注意到执行存储过程并不需要太多时间

但我需要将返回的数据集分配给对象集合

我已经在下面展示了我是如何做到这一点的。 当我调试时,我注意到执行foreach循环需要相当长的时间

            var ds = Handler.GetDataSetFromSP();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                MyModel model = new MyModel();

                model.Code = row["TextOne"].ToString();
                model.Name = row["TextTwo"].ToString();
                model.SomeOtherCol = row["TextThree"].ToString();
                model.AnotherCol = row["TextFour"].ToString();
                model.NextCol= row["TextFive"].ToString();
                model.FinalCol = Convert.ToDateTime(row["TextSix"]);

                accounts.Add(model);
            }
是否有其他方法来编写上述foreach循环中给出的代码段?
这需要很多时间,我需要减少它。

您的列中有索引吗?转换数据需要多少时间?有多少记录?从数据库中获取记录需要多长时间?不,我没有。但是SP在“var ds=Handler.GetDataSetFromSP();”行中被调用,并在大约2秒钟内执行。您是否尝试了
SqlDataReader
而不是返回
DataSet
?循环使用
SqlDataReader
比循环使用
DataSet.Tables[0]要快得多。行
这可能会有所帮助。请看一看。