0Pricing
C# Academy · レッスン

LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行

IEnumerable に対する小さなLINQパイプラインを構築します。Whereでフィルターし、Selectで変換し、OrderByで並べ替えます。遅延実行とマテリアライズの違いも学びます。

「LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

LINQ の概要

目標:小さな LINQ パイプラインを使用して、データをフィルタリング、変換、並べ替えします。

  • Where(フィルター)
  • Select(マッピング)
  • OrderBy、Take/Skip
  • 遅延実行と実体化

Where + Select

Where(フィルター)に続けてSelect(変換)をチェーンします。左から右へ読みます。

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] data = new int[] { 1, 2, 3, 4, 5, 6 };

    // Filter even numbers, then square them
    var query = data.Where(x => x % 2 == 0)
                    .Select(x => x * x);

    foreach (int n in query)
    {
      Console.WriteLine(n); // 4, 16, 36
    }
  }
}

OrderBy と Take

OrderBy(およびThenBy)で並べ替え、Takeで件数を制限します。

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] names = new string[] { "Zoe", "Ada", "Alan", "Bob" };

    var top2 = names.OrderBy(s => s.Length) // shortest first
                    .ThenBy(s => s)         // tie-breaker
                    .Take(2);

    foreach (string s in top2)
    {
      Console.WriteLine(s); // Ada, Bob
    }
  }
}

プロジェクション(匿名型)

Selectを使用すると、匿名オブジェクトを作成してデータの形をすばやく変更できます(Word、Length)。

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] words = new string[] { "map", "filter", "reduce" };

    var info = words.Select(w => new { Word = w, Length = w.Length });

    foreach (var x in info)
    {
      Console.WriteLine(x.Word + " (" + x.Length + ")");
    }
  }
}

遅延実行

遅延:クエリは反復処理時に実行されます。列挙する前にソースを変更すると、結果に反映されます。

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    List<int> numbers = new List<int> { 1, 2, 3 };

    var q = numbers.Where(x => x > 1); // not executed yet

    numbers.Add(4); // modify source before enumeration

    foreach (int x in q) // executes here
    {
      Console.WriteLine(x); // 2, 3, 4
    }
  }
}

実体化と構文

ToList/ToArrayを使用すると、クエリを実行して結果を保存できます。クエリ構文は、同じパイプラインを記述する別の方法です。

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] data = new int[] { 3, 1, 2 };

    // Method syntax + materialize
    var sorted = data.OrderBy(x => x).ToList(); // executes now
    data[0] = 100; // will not affect 'sorted' (already materialized)

    foreach (int n in sorted) { Console.WriteLine(n); } // 1,2,3

    // Query syntax (equivalent)
    var query =
      from x in data
      where x < 50
      select x * 2;

    foreach (int n in query) { Console.WriteLine(n); } // 2,4
  }
}

遅延実行の意味

確認:ほとんどの LINQ 演算子が遅延実行されるとは、どういう意味ですか?

まとめ

まとめ:Where、Select、OrderBy、Take/Skipでパイプラインを構築します。LINQ は遅延実行されるため、結果を固定する必要がある場合はToList/ToArrayで実体化します。

よくある質問

「LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行」レッスンは無料ですか?

はい。「LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行」で何を学びますか?

IEnumerable に対する小さなLINQパイプラインを構築します。Whereでフィルターし、Selectで変換し、OrderByで並べ替えます。遅延実行とマテリアライズの違いも学びます。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。

「LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 配列、スライス、List 、Dictionary
  2. foreachのパターンとコレクション初期化子
  3. LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行
← C# Academyに戻る