2016-12-17 12 views
1

if演算子と同じようなif条件ブロックで複数の条件を検索したい。SQlの 'IN'と同じ機能を持つC#のオプション

public class Check{ 
int [] arr={1,2,5,9,7,11,89}; 
for(int i=0;i<arr.length;i++) 
{ 
    if(arr[i]==1||arr[i]==5||arr[i]==7||arr[i]==89) 
    { 
    Console.WriteLine("The No Is Found."); 
    } 
} 

ここにこのような結果があります。

if(arr[i] in(1,5,7,89) 
    { 
    Console.WriteLine("The No Is Found."); 
    } 
+0

多くのビルトインコンテナクラスには、すでにこれを行う 'Contains()'という組み込みメソッドがあります。また、独自のカスタムコンテナクラスを作成する場合は、同様のメソッドを組み込む必要があります。 –

+0

これは条件文を検索しますか? –

+0

複数の条件を含むC#コンテナクラスオブジェクトがある場合は、条件を検索します(yes)。例えば、リスト x = new List {cond1、cond2、cond3、cond4、cond5}のインスタンスを作成すると、 'x.Contains(cond1)'がtrueを返し、 'x.Contains( cond12) 'はfalseを返します。 –

答えて

5

そこは何もありません、INと同等だ言語としてC#でません...しかし、あなたは簡単に同様の効果を得ることができます。

: - :

最も簡単な方法は、おそらく配列に対してSystem.LinqContainsを使用することですあなたが多数のターゲットを持っていた場合は、より効率的である代わりに

using System; 
using System.Linq; 

public class Check{ 

    static void Main() 
    { 
     int[] candidates = {1, 2, 5, 9, 7, 11, 89}; 
     // This is the members of the "in" clause - the 
     // the values you're trying to check against 
     int[] targets = { 1, 5, 7, 89 }; 
     foreach (int candidate in candidates) 
     { 
      Console.WriteLine(
       targets.Contains(candidate) ? 
       $"{candidate} is in targets" : 
       $"{candidate} is not in targets"); 
     } 
    } 
} 

、あなたはHashSet<int>を使用することができます

using System; 
using System.Collections.Generic; 

public class Check{ 

    static void Main() 
    { 
     int[] candidates = {1, 2, 5, 9, 7, 11, 89}; 
     var targets = new HashSet<int> { 1, 5, 7, 89 }; 
     foreach (int candidate in candidates) 
     { 
      Console.WriteLine(
       targets.Contains(candidate) ? 
       $"{candidate} is in targets" : 
       $"{candidate} is not in targets"); 
     } 
    } 
} 
関連する問題