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;
}

これは基本的にデータセットを 2 回ループします...したがって、ここで初心者プログラマーのように聞こえることなく、クエリ自体で 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 に答える