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
}
}
遅延実行の意味
まとめ
まとめ: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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 配列、スライス、List 、Dictionary
- foreachのパターンとコレクション初期化子
- LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行