準備
(なし)
デザイン
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 query1 = from s in s1.Intersect(s2)
select s;
var query2 = from s in s1.Except(query1)
select s;
foreach (var item in query2)
{
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 query1 = s1.Intersect(s2);
var query2 = s1.Except(query1);
foreach (var item in query2)
{
listBox1.Items.Add(item);
}
}
解説
片方の配列にだけ含まれるデータを抽出しています。抽出方法はまず、共通データを Intersect メソッドで決定します。そして、Except メソッドでその共通データを除外しています。
button1 クリックと button2 クリックの処理内容は同一です。LINQ を SQL タイプで記述するかメソッドタイプで記述するかの違いだけです。
結果

動作確認環境
Visual Studio 2015 Professional (C# 6.0)