C#プログラマーのための 基礎からわかるLINQマジック!

[表紙]C#プログラマーのための 基礎からわかるLINQマジック!

紙版発売
電子版発売

A5判/352ページ

定価3,168円(本体2,880円+税10%)

ISBN 978-4-7741-8094-6

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

現在では“技術に保守的な現場”においてさえ顧客事情が変わっています。.NETの環境でも核心的な技術=LINQがようやく使えるようになりました。LINQは,実際に使ってみると“LINQマジック”とでも呼べる威力を発揮します。その対象も,配列,コレクションなど(LINQ to Objects),XML(LINQ to XML),データベース(LINQ to ADO.NET)といったように広範囲に及びます。LINQそのものの“わかりにくさ”から使わなかった開発者も少なくなかったようですが,本書がプログラマーのLINQアレルギーを取り除きます。

こんな方におすすめ

  • C#や.NETは扱えるが,現場の事情によりLINQについては未経験か,熟知していないプログラマー

目次

  • はじめに

Part 1 LINQマジック

Chapter 1 "Hello, LINQ!"

  • 1.1 Windows フォームにベジエ曲線を描く
  • 1.2 LINQ はforループを簡潔に書ける
  • 1.3 「"Hello, LINQ!"」 のコード

Chapter 2 数値の集計

  • 2.1 準備
  • 2.2 すべてを合計する
  • 2.3 条件を満たす数値だけを取り出す
  • 2.4 条件を満たす数値だけを合計する
  • 2.5 メモリ消費を確かめる
  • 2.6 null を含むデータを処理する
  • 2.7 「数値の集計」のコード

Chapter 3 文字列の処理

  • 3.1 準備
  • 3.2 文字数をカウントする
  • 3.3 CSVファイルから必要なデータだけを取り出す
  • 3.4 文字列コレクションを検索する
  • 3.5 文字列を反転する
  • 3.6 文字列コレクションで複雑な検索をする
  • 3.7 「文字列の処理」のコード

Chapter 4 複数のUIコントロールの操作

  • 4.1 準備
  • 4.2 UIコントロールを操作する
  • 4.3 「複数のUIコントロールの操作」のコード

Chapter 5 CSVファイルの処理

  • 5.1 準備
  • 5.2 ファイルを1行ずつ読み込む
  • 5.3 ファイルの1行からSampleオブジェクトを作る
  • 5.4 データの種類を判定する
  • 5.5 数値を合計する
  • 5.6 Mainメソッドにまとめる
  • 5.7 LINQマジックの「秘密」
  • 5.8 残りの数値も合計する
  • 5.9 「CSVファイルの処理」のコード

Chapter 6 LINQマジック ――3つの「秘密」

  • 6.1 LINQはループを分解/再構築させる
  • 6.2 LINQはメモリを節約する
  • 6.3 LINQは必要に応じて(遅延)実行される

Chapter 7 ToListメソッドの罠

  • 7.1 ToListメソッドのデメリット
  • 7.2 ToListメソッドのメリット
  • 7.3 「ToListメソッドの罠」のコード

Chapter 8 LINQの仕組み

  • 8.1 IEnumerableインターフェイス
  • 8.2 IQueryableインターフェイス

Chapter 9 別の書き方 ――クエリ式

Chapter 10 LINQ拡張メソッドの作り方

  • 10.1 独自のLINQ拡張メソッドとは?
  • 10.2 LINQを使うLINQ拡張メソッド
  • 10.3 foreachを使うLINQ拡張メソッド
  • 10.4 ラムダ式を受け取るLINQ拡張メソッド
  • 10.5 「LINQ拡張メソッドの作り方」のコード

Chapter 11 LINQデータソースの作り方

  • 11.1 遅延実行しないLINQデータソースの作り方
  • 11.2 遅延実行するLINQデータソースの作り方
  • 11.3 「LINQデータソースの作り方」のコード

Chapter 12 LINQプロバイダーの作り方

  • 12.1 LINQプロバイダーの構成
  • 12.2 LINQプロバイダーの標準的な部分実装
  • 12.3 LINQプロバイダーを実験的に実装してみる
  • 12.4 実験的に作ったLINQプロバイダーを試す
  • 12.5 LINQプロバイダーのメリット
  • 12.6 「LINQプロバイダーの作り方」のコード

Chapter 13 LINQマジックの正体 ――まとめ

Part 2 LINQを使いこなすための機能

Chapter 1 拡張メソッド

Chapter 2 ラムダ式

Chapter 3 Visual Studio .NET 2003での新機能

  • 3.1 foreach構文
  • 3.2 デリゲート
  • 3.3 IEnumerableインターフェイス

Chapter 4 Visual Studio 2005での新機能

  • 4.1 ジェネリック
  • 4.2 yieldキーワード(反復子,イテレーター)
  • 4.3 匿名メソッド(匿名デリゲート)
  • 4.4 静的クラス
  • 4.5 パーシャル型
  • 4.6 Nullable型(null許容型)

Chapter 5 Visual Studio 2008での新機能

  • 5.1 varキーワード
  • 5.2 拡張メソッド
  • 5.3 匿名型
  • 5.4 ラムダ式
  • 5.5 オブジェクト初期化子
  • 5.6 コレクション初期化子
  • 5.7 配列宣言の型省略(暗黙的に型指定される配列)
  • 5.8 自動実装プロパティ
  • 5.9 パーシャルメソッド
  • 5.10 クエリ式

Chapter 6 Visual Studio 2010での新機能

  • 6.1 省略可能な引数(オプション引数)
  • 6.2 名前付き引数
  • 6.3 共変性と反変性
  • 6.4 PLINQ

Chapter 7 Visual Studio 2012での新機能

  • 7.1 呼び出し元情報(Caller Info)属性
  • 7.2 async/awaitキーワード

Chapter 8 Visual Studio 2015での新機能

  • 8.1 自動実装プロパティの初期化子
  • 8.2 読み取り専用プロパティの自動実装
  • 8.3 ラムダ式によるメンバー定義
  • 8.4 補間文字列(String Interpolation)
  • 8.5 nameof演算子
  • 8.6 Null条件演算子
  • 8.7 using staticディレクティブ

Part 3 LINQを活用しよう

Chapter 1 LINQ to Objects

Chapter 2 LINQ to ADO.NET

  • 2.1 LINQ to DataSet
  • 2.2 LINQ to SQL
  • 2.3 LINQ to Entities

Chapter 3 LINQ to XML(XLinq)

Chapter 4 Parallel LINQ(PLINQ)

Chapter 5 Reactive Extensions(Rx)

Chapter 6 LINQ to CSV

Chapter 7 Html Agility Pack

Chapter 8 Webサービスを利用するためのLINQ

  • 8.1 LINQ to JSON
  • 8.2 LINQ-to-Wiki

Chapter 9 他のプラットフォームのLINQ

  • 9.1 linq.js

Appendix Visual Studio Community 2015のインストールと使い方

Chapter 1 Visual Studio 2015の特徴と種類

Chapter 2 インストール

Chapter 3 初めての起動

Chapter 4 コンソールプログラムを作る

  • 4.1 プロジェクトを作る
  • 4.2 プログラムを書く
  • 4.3 ビルド,デバッグ実行
  • 4.4 完成したプログラムを配布する

Chapter 5 Windowsフォームプログラムを作る

  • 5.1 プロジェクトを作る
  • 5.2 UIを作る
  • 5.3 プログラムを書く

Chapter 6 WPFプログラムを作る

  • 6.1 プロジェクトを作る
  • 6.2 UIを作る
  • 6.3 プログラムを書く
  • おわりに

著者プロフィール

山本康彦(やまもとやすひこ)

1957年,名古屋に生まれる。名古屋大学工学部卒(修士)。本田技術研究所で自動車の設計/研究にしばらく携わった後,ソフトウェア開発業界に転身。主にWindows系の業務システムを手がけてきた。.NET FrameworkとC#とは,まだβ版だった2001年からの付き合い。LINQとは,Visual Studio 2005用として2006年春にリリースされたCTP版からの付き合いになる。
2012年に独立し,現在はWindowsストアアプリ/UWPアプリをメインに開発している。
2014年10月から,マイクロソフトMVP(Windows Developmentカテゴリー)。