2014-03-27 29 views
0

如何在數組中搜索我的ID,如果它找到我的ID,請將其保存在userseq中。如果沒有找到,只返回消息(Messagebox.Show("Does not exist"))數組的所有單元(我整理搜索shows only one message)後,平均如何搜索陣列並顯示一條消息

for (int yu = 0; yu <= 92161; yu++) 
{ 
    int wer = d[yu]; 
    if (wer == sc) 
    { 
     userseq = yu; 
    } 
} 

PS:我通過

int? userseq=null; 
........... 
(!userseq.HasValue) 
{ 
Messagebox.Show("Does not exist") 
} 
+0

你現在的代碼有什麼問題?你有任何錯誤?它是否不返回預期的輸出(如果不是,那麼它返回什麼以及預期的結果是什麼)?看起來也許你只是忘了在'if(!userseq.HasValue)'行的開頭添加'if'? – BateTech

+0

當我向系統插入錯誤的編號時,它仍然顯示一些不正確的結果。如果在這裏,我忘了添加,但是在我使用它的代碼中。另外我不能使用int? userseq = NULL;因爲userseq是「int」但「null」是布爾值@BateTech – user3446681

+1

你已經問了兩次,[這裏](https://stackoverflow.com/questions/22649451/how-to-add-condition-to-loop )和[這裏](https://stackoverflow.com/questions/22675342/how-to-stop-running-the-code-fragment)。其他答案不適合你的是什麼? –

回答

0

之前還是可以嘗試使用LINQ:

int? foundId = arr.FirstOrDefault(a => a == userseq); 
if (!foundId.HasValue) 
{ 
    Messagebox.Show("Does not exist!"); 
} 

其中, 「改編」 是數組和 「userseq」 是你比較ID

只要確保包含System.Linq。您可能需要先將陣列轉換爲列表。如果是這樣,只需添加 「.ToList()」, 「.FirstOrDefault」

更多的例子之前:http://www.dotnetperls.com/firstordefault

編輯:以上數據假設它是int類型的數組? Otheriwse,FirstOrDefault將返回0,如果它是一個Ints數組。

int foundId; 
if (!arr.Any(a => a == userseq) 
{ 
    Messagebox.Show("Does not exist!"); 
} 
else 
    foundId = arr.FirstOrDefault(a => a == userseq); 

更多「任何」的例子:http://www.dotnetperls.com/any

0

我會做以下

int yu = 0; 
    while (yu <= 92161) 
    { 
     if (d[yu] == sc) 
     { 
      userseq = yu; 
      break; 
     } 
     yu++; 
    } 
    if (yu > 92161) 
     MessageBox.Show("Does not exist") 

這樣一來,如果找到ID,它會退出,將不打印消息。 如果搜索完整個數組後,它沒有找到,它會打印該消息。

希望它有幫助。