C# これなら分かる Linq 基本編2. コレクションの並べ替え

VisualStudio2016にて、新しくプロジェクトを作成します。
ウィンドウにボタンを一つ配置して、下記のコードを記載。

動作
配列 numbers の中から、条件に合う数値のみを抽出します。
抽出された数値を小さい順に並べ替えてMessageBoxに表示していきます。

using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace Linq
{
   ///
   /// MainWindow.xaml の相互作用ロジック
   ///
   public partial class MainWindow : Window
   {
        public MainWindow()
        {
           InitializeComponent();
        }

        private void Linq2_Click(object sender, RoutedEventArgs e)
        {
             //int配列 numbersを作ります
             int[] numbers = { 5, 1, 3, 4, 2 };
             var q = from n in numbers where n >= 2 && n <= 4 orderby n select n;
             //var q = from n in numbers select n;
             foreach (var n in q) MessageBox.Show(n.ToString());

            //variant(多様、変異体、変わりやすい、などの意味があります)の先頭3文字でvarです。
            //varは型ですが、初めて値を代入するときに厳密に型が決まる、暗黙の型です。

            //nは範囲変数
            //「範囲変数(range variable)」では、データソース内の各要素を入れる変数を指定します。データソースがIEnumerableインターフェイスを実装していれば、範囲変数の型は自明ですので(データソースがList型なら範囲変数はint型)、範囲変数の型指定は省略できます

            //例 whereを入れなければ、numbersの中にあるすべてが表示される
            //var q = from n in numbers select n;
            //これを試すと、whereが条件を表しているだけなのが良く分かります。
        }
    }
}