Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C#

C#で配列に特定の値があるか?をチェックする方法を2つご紹介~ContainsとLINQ~

投稿日:2020年11月18日 更新日:

<目次>

(1) C#で配列に特定の値があるか?をチェックする方法
 (1-1) 方法①:ListクラスのContainsメソッドを使う方法
  (1-1-1) 構文
  (1-1-2) サンプルプログラム
 (1-2) 方法②:LINQを使う方法
  (1-2-1) 構文
  (1-2-2) サンプルプログラム

(1) C#で配列に特定の値があるか?をチェックする方法

配列の中から特定の値があるかをチェックする、いわゆる「探索」のアルゴリズムについてご紹介します。やり方はいくつかありますが、今回は2つの方法をご紹介します。

(1-1) 方法①:ListクラスのContainsメソッドを使う方法

1つ目の方法はListクラスのContainsメソッドを使う方法です。

(1-1-1) 構文

(構文)

[List型].Contains([探したい値])

(構文説明)
まず[List型]の変数について、次のようなList型で定義した変数を指します。

//int型の例
List<int> ls = new List<int>();
//String型の例
List<string> ls = new List<string>();

そしてリスト型のオブジェクトの「Contains()」メソッドで、目的の値があるかどうかをチェックします。結果はboolean型で返ってくるので、if文の条件に入れる事でTrueの場合、つまり[探したい値]がある場合の処理を記述します(↓)。

if ([List型].Contains([探したい値])) { [存在する場合の処理]; }

単一の値の探索であればこの方法で十分と思いますが、もしも複数の値の探索で条件も複雑になってくる場合は、後述するLINQのやり方をオススメします。

目次にもどる

(1-1-2) サンプルプログラム

1つ目の方法「ListクラスのContainsメソッドを使う方法」のサンプルプログラムです。

(サンプルプログラム)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SampleProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      //### <int型の例>
      int[] values = { 2017, 2019, 2021}; //事前データ仕込み
      intCheck(values);          //チェック実行
    }
    static void intCheck(int[] val)
    {
      //### 引数で受け取った配列を、List<int?>型の配列に順番に追加
      List<int?> ls = new List<int?>();
      for (int i = 0; i < val.Length; i++)
      {
        ls.Add(val[i]);
      }
      //### 特定の値があるか?のチェック
      if (ls.Contains(2017)) { Console.WriteLine("Int Check = 2017 exist !!!"); }
      if (ls.Contains(2018)) { Console.WriteLine("Int Check = 2018 exist !!!"); }
      if (ls.Contains(2019)) { Console.WriteLine("Int Check = 2019 exist !!!"); }
      if (ls.Contains(2020)) { Console.WriteLine("Int Check = 2020 exist !!!"); }
      if (ls.Contains(2021)) { Console.WriteLine("Int Check = 2021 exist !!!"); }
    }
  }
}

(実行結果)

目次にもどる

(1-2) 方法②:LINQを使う方法

LINQはC#等でSQLのようなクエリを実行できる技術です。これを用いて配列から特定の値を探すクエリを実行します。

(1-2-1) 構文

LINQはプログラムからSQLを実行する時と同じ要領で記述できて、ざっくり「クエリを変数で定義」⇒「クエリ実行&結果抽出」のステップになります。

(前半構文:クエリ定義)
まず[クエリ変数名]は「var型」で定義しており、様々な型が入り交じるケースに備えています。イコール以降はSQL文のように配列に対して実行するクエリを定義しています。

var [クエリ変数名] = from [取得値の変数名] in [配列]
                     where [取得値の変数名].Contains('[探索する文字]')
                     select [取得値の変数名];

(後半構文:クエリ実行)
foreachでクエリ結果の配列を順番にループして、値を[ループ取得値の変数名]に格納します。その各値について処理を行えます。

foreach (var [ループ取得値の変数名] in [クエリ変数名])
  [何かの処理]

目次にもどる

(1-2-2) サンプルプログラム

2つ目の方法である「LINQを使う方法」のサンプルプログラムをご紹介します。

(サンプルプログラム)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SampleProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      //探索対象の配列を定義
      string[] big4_names = { "Roger Federer", "Rafael Nadal", "Novak Djokovic", "Andy Murray" };
      
      //探索のクエリを定義
      var myLinqQuery = from name in big4_names
               where name.Contains('e')
               select name;
      //クエリの実行
      foreach (var name in myLinqQuery)
        Console.WriteLine(name + " ");
    }
  }
}

(実行結果)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ASP.NET MVCでformをSubmitする方法

<目次> (1) ASP.NET MVCでformをSubmitする方法  (1-1) 概要  (1-2) HTMLを使ってformをsubmitする方法  (1-3) サンプルプログラム  (1-4 …

ASP.NETでViewに値を渡す方法

  <目次> (1) ASP.NETでViewに値を渡す方法  (1-1) 方法1:アクションメソッドの引数に追加  (1-2) 方法2:ViewBagを使う方法  (1-3) 方法3:ビュ …

C#のvarの使いどころは?初めての方に向けてサンプルプログラムを使ってご紹介

<目次> (1) C#のvarの使いどころは?初めての方に向けてサンプルプログラムを使ってご紹介  (1-1) ArrayListに異なるデータ型が混在しているパターン  (1-2) LINQのクエリ …

BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)

  <目次> (1) BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)  (1-1) 前提条件  (1-2) 確認ポイント   (確認①)Bundl …

C#でフォルダ内のファイルの一覧を取得する方法

<目次> (1) C#でフォルダ内のファイルの一覧を取得する方法  (1-1) 方法①構文  (1-2) 方法①サンプルプログラム  (1-3) 方法②構文  (1-4) 方法②サンプルプログラム ( …

  • English (United States)
  • 日本語
Top