未分類

C# LINQ - 2 つの配列データの積集合を求める

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。

サンプルコード (C#)

// 名前空間の追加
// (なし)

// コード
private void button1_Click(object sender, EventArgs e)
{
  // SQL タイプの LINQ
  string[] s1 = { "NEC", "SONY", "DELL", "FUJITSU", "HITACHI" };
  string[] s2 = { "NEC", "DELL", "TOSHIBA", "EPSON", "SONY" };
  
  var query = from s in s1.Intersect(s2)
              select s;

  foreach (var item in query)
  {
    listBox1.Items.Add(item);
  }
}

private void button2_Click(object sender, EventArgs e)
{
  // メソッドタイプの LINQ
  string[] s1 = { "NEC", "SONY", "DELL", "FUJITSU", "HITACHI" };
  string[] s2 = { "NEC", "DELL", "TOSHIBA", "EPSON", "SONY" };
  
  var query = s1.Intersect(s2);
  foreach (var item in query)
  {
    listBox1.Items.Add(item);
  }
}

解説

2 つの配列のデータの積集合を求めています。つまり、2 つの配列データに共通するデータのみ抽出しています。

button1 クリックと button2 クリックの処理内容は同一です。LINQ を SQL タイプで記述するかメソッドタイプで記述するかの違いだけです。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類