2013-04-09 43 views
1

我有一段代碼,我知道可以做的更好,我只是不知道如何去做。我認爲有一些方法可以幫助解決這個問題,但我不確定,請原諒我,如果這是元素編程。C#2012列出對象限制

我通過一個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; 
} 

這基本上循環兩次以上的數據集。所以,沒有拉響太像這裏新手程序員,這將是限制的結果設定爲100的最佳方式在查詢本身中不使用TOP(###)? (我們使用存儲過程,所以改變查詢是不可能的)。

謝謝鄉親!我期待你的回答。

+0

你有在'dr.Read()'循環使用計數器的任何問題? – Justin 2013-04-09 17:43:09

+0

probabaly只是'返回temp.GetRange(0,100)' – IdeaHat 2013-04-09 17:43:15

+0

順便說一句 - 你目前的代碼將返回101項 - 是,期望? – 2013-04-09 17:43:55

回答

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;