準備

(なし)

デザイン

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

サンプルコード (C#)

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

// コード
private void button1_Click(object sender, EventArgs e)
{
  // パターン-1
  string[] sData = { "A", "ABC", "XYZ", "AAA", "AB" };
  var query = sData.Where(s => ((string)s).StartsWith("AB"));
  
  foreach (string item in query)
  {
    Console.WriteLine(item);
  }
}

private void button2_Click(object sender, EventArgs e)
{
  // パターン-2
  string[] sData = { "A", "ABC", "XYZ", "AAA", "AB" }; 
  IEnumerable<string> query = sData.Where(s => ((string)s).StartsWith("AB"));
  
  foreach (string item in query)
  {
    Console.WriteLine(item);
  }
}

解説

■ 説明
文字列配列から条件に合致した項目だけを抽出する処理を行います。

1. パターン-1 は、LINQ の戻り値を匿名型の変数に代入しています。

2. パターン-2 は、LINQ の戻り値を IEnumerable 型を指定した変数に代入しています。つまり戻り値の型を明示的に指定しています。

通常は、匿名型を使うことが多いかもしれませんが、戻り値の型がどのようなものなのかを把握しておくことが大事だと思います。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)