注目の記事 PICK UP!

  • C#

C# ディクショナリを使う目的と方法

ディクショナリを使って、集計業務にどのような活用ができるかを紹介します。ここでは、ディクショナリを使う目的を「ある条件に一致するデータを検索する」ことを想定してサンプルコードを作成しています。

※ディクショナリとは、key(キー)とvalue(値)の組み合わせで検索するハッシュテーブル(連想配列)のことを言います。

スポンサーリンク

サンプルデータ

申込リストサンプルディクショナリサンプル

 

条件判定

申込みリストの年齢が条件を満たしているかどうか、ディクショナリを使ってチェックします。

ディクショナリには、あらかじめ年齢に対しての条件結果を格納します。それでは、サンプルコードを見てみましょう。

サンプルコード


/// <summary>
/// keyとvalueをディクショナリに登録します
/// </summary>
/// <param name="dtRequest">申込リストのデータテーブル</param>
/// <param name="dtDict">ディクショナリに登録するデータテーブル</param>
public void CreateIndex(DataTable dtRequest,DataTable dtDict)
{
	// keyとvalueは文字列として定義
	Dictionary<string, string> dict = new Dictionary<string, string>();

	// keyをディクショナリに登録
	for (int i = 0; i < dtDict.Rows.Count; i++)
	{
		// 年齢をkeyに入れる
		string key = dtDict.Rows[i]["key"].ToString();

		// ディクショナリに未登録の場合は新規追加
		if (!dict.ContainsKey(key))
		{
			// 年齢,OK・NGをディクショナリに登録
			dict.Add(key, dtDict.Rows[i]["value"].ToString());
		}
	}

	// 申込リストの判定結果
	for (int i = 0; i < dtRequest.Rows.Count; i++)
	{
		// 申込リストの年齢をkeyに入れる
		string key = dtRequest.Rows[i]["年齢"].ToString();

		// ディクショナリから判定結果を検索
		if (dict.ContainsKey(key) == "OK")
		{
			// OKを格納
			dtRequest.Rows[i]["判定結果"] = "OK";
		}
		else
		{
			// NGを格納
			dtRequest.Rows[i]["判定結果"] = "NG";
		}
	}

}

 

ディクショナリのインスタンス作成

Dictionary<string, string> dict = new Dictionary<string, string>();

9行目のところでディクショナリのインスタンスを作成しています。keyとvalueは、文字列を入れる記述例です。

ディクショナリに登録


// keyをディクショナリに登録
for (int i = 0; i < dt.Rows.Count; i++)
{
	// 年齢をkeyに入れる
	string key = dt.Rows[i]["key"].ToString();

	// ディクショナリに未登録の場合は新規追加
	if (!dict.ContainsKey(key))
	{
		// 年齢,OK or NGをディクショナリに登録
		dict.Add(key, dt.Rows[i]["value"].ToString());
	}
}

検索値(key)とその検索値に紐付くデータ(value)を登録します。

ContainsKeyメソッドでkeyがディクショナリに登録されていない場合、Addメソッドで新規に登録するようにif文で制御しています。逆に登録済みの場合は、重複を避けるためにディクショナリには登録しないようにしています。

申込みリストの判定

// 申込みリストの判定結果
for (int i = 0; i < dtRequest.Rows.Count; i++)
{
	// 申込みリストの年齢をkeyに入れる
	string key = dtRequest.Rows[i]["年齢"].ToString();

	// ディクショナリから判定結果を検索
	if (dict.ContainsKey(key) == "OK")
	{
		// OKを格納
		dtRequest.Rows[i]["判定結果"] = "OK";
	}
	else
	{
		// NGを格納
		dtRequest.Rows[i]["判定結果"] = "NG";
	}
}

申込みリストの年齢をkey値としてディクショナリから検索します。ディクショナリから判定結果が返ってくるのでOK or NGをif文で制御しています。

スポンサーリンク

  • コメント: 1

関連記事

  1. C# DataTableにカラムを追加

  2. C#でOutlook2010を使ったメール送信方法

  3. C# DataTableをコピーする

  4. C# DataTableの特定レコードを削除

  5. C# DataTableの特定データにNULLを入れる

  6. C# ファイルダイアログからテキストを読み込む方法

  7. C# DataTableの特定データを更新

  8. Android Studio jarファイルを追加したらリビルドしよう

  9. C# Webページのデータを取得する方法

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP