デモとハンズオンを収めた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を利用し、物理データへの依存しない構造を実現する。
概念Entitiy Data Modelを利用し、物理データへの依存しない構造を実現する。
・ LINQ to SQL
DataSetに対してクエリを行う実装である。
LINQ to XMLとは?
・ XMLデータに対するクエリ、データ操作が可能な実装である。
・従来のXML操作に加え、LINQをサポートする新しいクラスを提供する。
LINQの関連構文についてLINQ to XMLとは?
・ XMLデータに対するクエリ、データ操作が可能な実装である。
・従来のXML操作に加え、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回でる。
今日の名言
一つの点で幸福になれなければ、他の点で幸福になればよい。こうした目標転換を
するには処世訓はあまり役に立たない。なぜなら、健康と人柄のよさが一番の問題
だからだ。多くの人間が幸福を追い求めるさまは、まるでうっかり者が帽子を追いかける
ようだ。ちゃんと手にするか頭にかぶっているのに、自分では気づかない。
ウィリアム・シャープ
幸福は物事の味にあって、物事そのものにあるのではない。幸福になるのは、自分の
好きなものを持っているからであり、他人が良いと思うものを持っているからではない。
ラ・ロシュフコー
人間が幸福であるかは、その人の人生に起こる様々の出来事をどういう目で見るか、
ということにかかっており、そうした出来事の性質そのものにはそれほど関係がない
ということを、私はますます信ずるに至った。
ウィリアム・フォン・フンボルト



