1

我有一大段代码我知道可以做得更好,我只是不知道如何去做。我认为有一些方法可以帮助解决这个问题,但我不确定,所以如果这是基本编程,请原谅我。

我正在遍历一个 DataReader 以填充对象列表,但我想限制列表中的索引数量。我当前的代码如下所示:

while (dr.Read())
{
    temp.Add(new Object()
        {
            PropertyA = dr.GetString(0),
            ...
            ...
        });
}

if (temp.Count > 100)
{
    for (int i = 0; i <= 100; i++)
    {
        retObject.Add(new Object()
            {
                PropertyA = temp[i].PropertyA,
                ...
                ...
             });
    }

    return retObject;
}
else
{
    return temp;
}

这实际上在数据集上循环了两次......因此,在这里听起来不太像新手程序员,在查询本身中不使用 TOP(###) 将结果集限制为 100 的最佳方法是什么?(我们使用存储过程,因此更改查询是不可能的)。

谢谢各位!我期待着你的回答。

4

1 回答 1

3

在您的第一个循环中,只需保留一个计数器:

int found = 0;
while (dr.Read() && found < 100)
{
    ++found;
    retObject.Add(new Object() // No need for "temp" anymore
    {
        PropertyA = dr.GetString(0),
        ...
        ...
    });
}

return retObject;
于 2013-04-09T17:42:56.150 回答