3回目である。
覚えておきたい選択部分の
一括コメントショートカット
Ctrl + K ⇒ Ctrl + C コメントアウト
Ctrl + K ⇒ Ctrl + U アンコメント
拡張メソッド
まずは、前回のサンプルコードの一部を再掲する。
IEnumerable<string> result = places
.Where(a => a.Length == 2)
.OrderBy (a => a)
.Select(a => a.Substring(0, 1));
これらの表現は「拡張メソッド」という機能で統制されている。
Whereはplacesから呼ばれている
役割:placesのデータを絞り込む
OrderByはWhereから呼ばれている
役割:Whereで作成されたデータを並び替え
SelectはOrderByから呼ばれている
役割:OrderByで並び替えられたデータをピックアップし、加工して
新しいコレクションへと変換している
拡張メソッドのイメージ
places 元のコレクション
↓
Where データを絞り込み
↓
OrderBy データを並び替え
↓
Select データを加工し、新しいコレクションセットへ
これらのWhere, OrderBy, Selectなどの実装は、placesで指定されている型と
関連するusingで指定された名前空間に依存する
言語統合
これらのクエリは構文としては2~3行程度のものだが、この中には多くの
言語概念や構文が必要となる。
- ローカルな型宣言
- 拡張メソッド
- ラムダ式
- オブジェクト初期化式
- 匿名型
- その他
これらは、「宣言型のコーディングへの移行」や「インピーダンスミスマッチの減少」
へのアプローチである。
データ操作のタイミング
これらのデータ操作はクエリが何らかの結果を得ようとするタイミングに
初めて動作する。つまり、結果セットをインメモリで保持しないのである。
.Where(a => a.Length == 2)
.OrderBy(a => a)
.Select(a => a.Substring(0, 1));
foreach(var place in result) // ←ココ!!
{
Console.WriteLine(place);
}
上の例では、実際にデータアクセスを行う「foreach」の部分で
クエリが実行される。
今日の名言
明日のことを思いわずらうな。明日のことは、明日自身が思いわずらうであろう。
一日の苦労は、その日一日だけで十分である。
「マタイによる福音書」第六章
一、 今日だけは、幸福でいよう。リンカーンは「たいていの人々は、自分で決心
した程度だけ幸福になれる」と言ったが、まったく至言である。幸福は
内部から生じる。外部の事柄ではない。
二、 今日だけは、自分自身をその場の状況に順応させて、自分の欲望のために
すべてを順応させることは控えよう。自分の家族も仕事も運も、あるがままに
受け入れて、自分をそれに合わせよう。
三、 今日だけは、体に気をつけよう。運動をし、体を大切にし、栄養を取ろう。
肉体を酷使したり、軽視することは慎もう。そうすれば、体は意のままに
動く完全な機械になるだろう。
四、 今日だけは、自分の精神を鍛えよう。何か有益なことを学び取ろう。精神的な
無精者にはなるまい。努力と思考と集中力を必要とするものを読もう。
五、 今日だけは、魂の訓練のために三つのことをしよう。誰かに親切を施し、
気づかれないようにしよう。ウィリアム・ジェイムズが教えているように、
修養のために少なくとも二つは自分のしたくないことをしよう。
六、 今日だけは、愛そうよくしよう。できる限り晴れやかな顔をし、穏やかな口調で
話し、礼儀正しく振舞い、惜しげなく人を褒めよう。他人の批判やあら探しを
慎み、他人を規制で縛ったり、戒めたりすることをやめよう。
七、 今日だけは、今日一日だけを生き抜くことにして、人生のあらゆる問題に
同時に取り組むことをやめよう。一生の間、続けるとしたら、嫌気のさすような
問題でも、十二時間なら我慢できる。
八、 今日だけは、一日の計画を立てよう。処理すべき仕事を一時間ごとに
書き出そう。予定通りにはいかないかもしれないが、ともかくやってみよう。
そうすれば、二つの悪癖 - 拙速と優柔不断と縁が切れるかもしれない。
九、 今日だけは、たった一人で静かにくつろぐ時間を三十分だけ生み出そう。
この時間を使い、時には神について考えよう。人生に対する正しい認識が
得られるかもしれない。
十、 今日だけは、恐れないようにしよう。特に幸福になることを恐れたり、
美しいものを楽しむことを恐れたり、愛することを恐れたり、私の愛する人が
私を愛していると信じることを恐れないようにしよう。
シビル・F・パートリッジ
シビル・F・パートリッジ
