2014年6月13日金曜日

C#応用 – LINQプログラミング 5


デモとハンズオンを収めたCDには

デモが4つあった。

実際に見たもの以外もありそうだ。




さて、C#応用 LINQプログラミング第5回である。

今回はLINQ実装からとなる。

LINQ実装
.NET Frameworkに含まれるLINQ実装は次の通り。
 ・ LINQ to Object
 ・ LINQ to ADO.NET
       > LINQ to SQL
       > LINQ to Entities
       > LINQ to DataSet
 ・ LINQ to XML


LINQ to Objectとは?

  • オブジェクトのコレクションを操作するものである。
  • System.Linq名前空間にある。
  • ユーザ作成のオブジェクトだけでなく、多くのオブジェクトに対するクエリが記述できる。
         例えば、
              > ディレクトリにあるファイル
              > レジストリ
              > Process
              > ログ
              > etc...



LINQ to ADO.NETとは?
 ・ LINQ to SQL
     .NETのカスタム型と物理テーブルのスキーマ間でのマッピングを処理する。

 ・ LINQ to Entities
  LINQ to SQLと酷似しているが、永続化層に直接データベースを利用するのではなく、
  概念Entitiy Data Modelを利用し、物理データへの依存しない構造を実現する。

 ・ LINQ to SQL
  DataSetに対してクエリを行う実装である。


LINQ to XMLとは?
 ・ XMLデータに対するクエリ、データ操作が可能な実装である。
 ・従来のXML操作に加え、LINQをサポートする新しいクラスを提供する。 


LINQの関連構文について
 LINQを扱う上で避けては通れない構文・構造がある
  • デリゲート
  • 拡張メソッド
  • 匿名型・型推論
  • オブジェクト初期化式

デリゲートとLINQ
式の中で実行させたい処理を記述する際に必要である。
isInclude myInclude = delegate(string param) // この部分の定義され
    {
        if (param.StartsWith("新"))
        {
            return true;
        }
        else
        {
            return false;
        }
    };

var query = ary.Where(x => myInclude(x)); // この部分で使用される


デリゲートとは?
1つもしくは複数のメソッドをカプセル化するクラスで、一般的には関数へのポインタである。    
デリゲートは複数の関数のポインタを保持できる。




CD LINQDemo02-03-Delegate

Delegate1x.cs


デリゲートの記述
「new デリゲート名」が暗黙的に変換されるようになり、メソッド名を単純に指定する
だけで同様のことができる。




CD LINQDemo02-03-Delegate

Delegate20.cs


メインはこのように書いてあるので、

        static void Main(string[] args)
        {
            Delegate1x s1 = new Delegate1x();
            s1.Run();

            Delegate20 s2 = new Delegate20();
            s2.Run();


          Console.ReadLine();
       }





両方あわせて実行すると、11が2回でる。





今日の名言
一つの点で幸福になれなければ、他の点で幸福になればよい。こうした目標転換を
するには処世訓はあまり役に立たない。なぜなら、健康と人柄のよさが一番の問題
だからだ。多くの人間が幸福を追い求めるさまは、まるでうっかり者が帽子を追いかける
ようだ。ちゃんと手にするか頭にかぶっているのに、自分では気づかない。
                                ウィリアム・シャープ

幸福は物事の味にあって、物事そのものにあるのではない。幸福になるのは、自分の
好きなものを持っているからであり、他人が良いと思うものを持っているからではない。
                                ラ・ロシュフコー

人間が幸福であるかは、その人の人生に起こる様々の出来事をどういう目で見るか、
ということにかかっており、そうした出来事の性質そのものにはそれほど関係がない
ということを、私はますます信ずるに至った。
                                ウィリアム・フォン・フンボルト