我有數值範圍。如何檢查範圍號碼是否存在於另一個號碼列表中而不使用for循環?
我想檢查一個範圍內的每個數字是否存在於另一個數字列表中。
我使用for循環,但它減慢我的應用程序。
public void ShowResults()
{
// The StartNumber and EndNumber is changed depends
// upon my requirement, They are not fixed.
int StartNumber = 1 ;
int EndNumber = 1000000;
string[] list =
{
"1", "equal", "3", "perhaps", "6", "10", "378",
"1937", "28936", "26543", "937" .........,
"understood" "99993"};
for(int i = StartNumber; i<= EndNumber;i++)
{
List<int> resultList = new List<int>();
int index = Array.IndexOf(list,i.ToString());
if(index >= 0)
{
resultList.Add(i);
}
}
}
您每次通過循環創建'resultList' - 發佈的代碼將創建*一百萬個列表*,這可能是您的性能問題的一部分。你究竟在做什麼? – 2012-08-03 10:21:50
如果你的字符串列表'list'比'EndNumber'減去'StartNumber'短得多,那麼你也可以說'list.Where(str => {int n; bool ok = int.TryParse(str,out n); return ok && n> = StartNumber && n <= EndNumber;})'或類似的。 – 2012-08-03 10:38:26
將resultList的聲明移至for循環外部以解決性能降低問題 – Alex 2012-08-03 10:54:37