本文へスキップ
BecomeCoder

C#文法コース · 第5章 LINQ · レッスン38

Select ― 要素を変換する

ブラウザで完結

導入

Whereが「絞り込み」なら、Selectは「変換」です。各要素を別の値に写し替える(射影する)ときに使います。

図解

flowchart LR
    IN["[1, 2, 3]"] --> S["Select(n => n * n)<br/>各要素を2乗"]
    S --> OUT["[1, 4, 9]"]
    style S fill:#e8f5e9

サンプル

int[] numbers = { 1, 2, 3, 4 };

// Select: 各要素を別の値へ変換する
var squares = numbers.Select(n => n * n);
Console.WriteLine(string.Join(", ", squares));   // 1, 4, 9, 16

// 文字列への変換もできる
string[] names = { "taro", "hanako" };
var greetings = names.Select(name => $"こんにちは、{name}さん");
foreach (var g in greetings)
    Console.WriteLine(g);
// こんにちは、taroさん / こんにちは、hanakoさん
  • Select(要素 => 変換後の値) で各要素を写し替える
  • string.Join(", ", コレクション) は要素を区切り文字で連結する便利メソッド
  • Where(絞り込み)とSelect(変換)はつなげて書ける

演習

int[] prices = { 100, 200, 300 };

// TODO: Select で各価格に消費税10%を足した金額(int)に変換し、
//       string.Join でカンマ区切り出力してください(110, 220, 330)
___
  • 期待される出力: 110, 220, 330
ヒント1を見る

prices.Select(p => p * 110 / 100) で税込に変換します

ヒント2を見る

Console.WriteLine(string.Join(", ", prices.Select(p => p * 110 / 100)));

まとめ

  • Select(要素 => 変換後)で各要素を別の形に変換する
  • string.Joinで結果を連結して表示できる
  • WhereSelectを組み合わせて絞り込み+変換ができる

次回: 件数・合計などの集計です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。