2017-08-31 75 views
-2

是否有非LINQ方式來搜索數組?我正在使用的應用程序IDE不支持LINQ。非LINQ陣列搜索

using System.Linq; 

string qSupEquip = "Two"; 

string [] keyOne = {"ALBAN", "BALYWIN", "BALT"}; 


private void XtraReportTemplate_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { 

    if (keyOne.Contains(lblFac.Text)){ 
     lblName.Text = qSupEquip; 
    } 

} 
+8

只需編寫一個foreach循環並逐個測試元素 – Steve

+1

此代碼是否按照您的要求進行操作?無論如何,它不是不允許你使用LINQ的IDE,它可能是.NET框架本身。 LINQ僅存在於.NET 3.5以上。 – HimBromBeere

+0

您可以嘗試使用['Array.IndexOf '](https://msdn.microsoft.com/en-us/library/eha9t187(v = vs.110).aspx)靜態方法。 – Dmitry

回答

3

只是遍歷數組,並檢查每一個項目:

bool found = false; 
foreach(var element in keyOne) 
{ 
    if(element == lblFac.Text) 
    { 
     found = true; 
     break; 
    } 
} 

Alternativly打表你的陣列,並使用List.Contains

bool found = new List<string>(keyOne).Contains(lblFac.Text); 
-2

我儘量避免環路只要有可能,所以System.Array上的幾個方法之一應該適合你。我的第一個選擇是Exists方法,因爲你只關心元素是否在數組中。如果您需要實際訪問該元素或使用其值,則還可以使用Find或IndexOf。

if(Array.Exists(keyOne, elem => elem == lblFac.Text){ 
    lblName.Text = qSupEquip; 
} 
+0

也許你可以在你的答案中加入一些_code examples_ – maccettura

+1

當你調用它時,你認爲Array.Exists()裏面發生了什麼?因爲我保證它最終會循環(如果它沒有拋出異常)。 – Trioj

+0

當我說我嘗試避免循環時,我的意思是我通常儘量避免編碼自己的循環,當我不需要時。它們往往會降低閱讀和維護代碼的能力。 –