2017-08-31 7 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ループを作成し、要素を1つずつテストするだけです – 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上のいくつかのメソッドの1つがあなたのために働くはずです。私の最初の選択肢は、要素が配列内にあるかどうか本当に気にするだけなので、Existsメソッドです。実際に要素にアクセスしたり、その値を使用する必要がある場合は、FindまたはIndexOfを使用することもできます。

+0

答えにいくつか_code examples_を含めることができます... – maccettura

+1

Array.Exists()内で何が起こっていると思いますか?私はそれが最終的にループしていることを保証しているので(例外をスローしなかった場合)。 – Trioj

+0

私はループを回避しようとしたとき、私は通常、私が必要としないときに自分のループをコーディングしないようにしようとしました。コードを読んで維持する能力を損なう傾向があります。 –