2016年6月6日月曜日

[C#] LINQ(リンク)-2 (メソッド式)

こんにちは。明月です。
前の投稿から続いてLINQ(リンク)のメソッド式について勉強します。


LINQ(リンク) - メソッド


前の投稿にはLINQを「SQLQuery」タイプで使いました。筆者もソースの可読性のため「SQLQuery」タイプをお勧めしますが、仕様によって検索条件が複雑になると「SQLQuery」だけですべての条件を実装できないと思います。
そのためクエリタイプのLINQではなく、メソッドタイプの「LINQ」があって実装できます。


WHEREメソッド




上の例を見るとList(リスト)で「Where」メソッドを使っています。そのメソッド中でデリゲートの匿名メソッドを使って繰り返して返却値が「true」場合にデータを出すようになっています。
すなわち、上の例は初めの「Where」メソッドで「Number」の値が5以上のデータかつ2つ目の「Where」メソッドで「Number」が8の以下のデータを返却してデータを出力します。


Orderメソッド




上の例は「LINQ」の「Orderby」の降順のメソッドです。Where関数と同じみたいにメソッド中には匿名メソッドで処理して、返却値は順番対象の値を返却します。
すなわち、「LINQExampleData」の「Number」の降順になって「9,8,7,6」になります。出力はデータの値を出力します。


SELECTメソッド




上の例の場合は「Select」メソッドを利用して「LINQExampleData」タイプから「String」タイプに変換していますね。


Joinメソッド




上の例は2つのリストを組み合わせて結果を出力することです。様々の処理が入りましたが、「Join」メソッドだけ見るとデリゲートが3つがあることが確認できます。
初めのパラメタは組み合わせるリスト、2つ目は対象レコードで比較するデータ、3つ目は組み合わせるリストの比較するデータ、最後は組み合わせたデータを返却するデリゲートになっています。


今までLINQの表現式をメソッドで作成する方法について勉強しました。ここで言うことで筆者はLinqメソッド形式と言いますが、実は「Enumerable」の処理だと言うし「Linq」メソッドはその「Enumerable」の処理メソッドの中で1つのメソッドです。
そうすると次の投稿は「Enumerable」の他の式について調べてます。

0 件のコメント