分はじめに前回は,ラムダ式についてをご説明しました。今回は,いよいよC#3.0の新機能として有名なLINQについてをご説明したいと思います。});上記はthis.Collectionというコレクションのデータから,qという新しいコレクションを以下の規則に準じて生成しています。未成年(Ageプロパティの値が20未満)のアイテムのみ名前順に並べ替えCode,Nameプロパティだけをメンバとしたオブジェクトに格納C#2.0のコードでは,完全に行うべき手続きに対するプログラミングが必要であることに対して,C#3.0のコードではLINQを使うことで,1つのクエリー式を記述しているだけにすぎません。Code,Nameプロパティだけのオブジェクトを作成するための記述は,匿名型によって簡単に実現できていますが,C#2.0では,以前ご説明した通り,別途Itemクラスを用意する必要があります。どちらのサンプルコードも,以下のコードによって正しく格納できていることを確認できます。Query)を略した名前です。その名の示す通り,冒頭のC#3.0のサンプルコードを見ると,クエリー式がコードとして記述できています。System)に関するテクノロジーだと誤解している方もいるようですが,これは大きな間違いです。冒頭のサンプルコードのように,コレクションオブジェクトに対しても使うことができます。Entities上記を見ると,我々がプログラミングをする上で,LINQはフロントエンドとしての役割を持っており,バックエンドとしては,オブジェクト・XML・DBMSなどのさまざまなデータソースに対応できることがわかると思います。Objectsになります。Objectsは,皆さんがLINQに触れるきっかけとなる最も身近なものになるでしょう。Objectsは,IEnumerable,IEnumerable<T>インターフェイスを継承したオブジェクトにクエリー式を適用できます。foreachを使ってオブジェクトに対して反復処理をさせる場面では,LINQの利用を検討してみてください。次のコードはDataGridViewの左上のセルをカレントセルにするためのコードです。0];grid.Columnsオブジェクトは,DataGridViewColumnCollection型なので,IEnumerable型を継承しています。IEnumerable<T>のようにコレクションに格納されるデータ型が明確に指定されていないため,各要素の型が推論できません。grid.Columnsのようにcolumnオブジェクトの型を直前に明記しています。XMLXMLのXElementに対してクエリー式を適用できます。XMLを実行するためには,以下のようにSystem.Xml.Linq名前空間をusingする必要があります。System.Xml.Linq;以下のコードは,“⁠http://blog.example.com/rss⁠”という架空のURLから取得したXML形式のRSSフィードデータを元に,タイトルの一覧を取得するためのサンプルです。DataSetsADO.NETのDataSetに対してクエリー式を適用できます。以下のコードは,MyDataSetのMyDataTableに格納されたデータから,未成年者の名前を取得するためのサンプルコードです。SQLSQLサーバー上のデータベースに対してクエリー式を適用できます。以下のコードは,ConnectionStringに指定された接続文字列に基づいてDataContextオブジェクトを作成したものから,未成年者の名前を取得するためのサンプルコードです。SQLクラスデザイナによって簡単に作成できるようになっています。Frameworkから提供される概念エンティティ(例えば,複数のテーブルを1つのエンティティとするなど)に対してクエリー式を適用できます。以下のコードは,contextオブジェクトのMyDataTableエンティティから,未成年者の名前を取得するためのサンプルコードです。x.Name;}クエリー式の正体クエリー式の正体は,シンタックスシュガーです。従って,クエリー式を使わずに記述することもできます。以下の2つのコードを見比べてみてください。});長いので改行されていますが,単にデリゲートを引数としたメソッドを書き連ねているだけです。各メソッドの引数では,ラムダ式が使われていることがわかります。今回は,C#3.0の新機能として有名なLINQをご説明しました。次回は,C#3.0で記述した簡単なサンプルコードと,これをC#2.0に置き換えたコードをご紹介したいと思います。これによって,実際にどのような場面で新機能が使えるのか,どれだけ省力化できるのかについてをご理解いただきたいと思います。2009)自他共に認めるC#信者です。(株)井沢電器設備(ビットラン)にて,主に業務管理システムの設計・開発を行っています。開発に関するご依頼ご相談など常時受け付けております。お気軽にご連絡ください。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。