Select、Where、OrderBy、Take/Skip
Whereでフィルターし、Selectで変換し、OrderBy/ThenByで並べ替え、Take/Skipでページングします。シンプルで読みやすいチェーンを作ります。
「Select、Where、OrderBy、Take/Skip」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。
演算子の役割
役割:
- Whereはフィルタリングします
- Selectは変換します
- OrderBy/ThenByは並べ替えます
- Take/Skipは結果をページ分割します
チェーンは短く、読みやすく保ちます。
Whereによるフィルタリング
Whereは条件(述語)を満たす項目を残します。
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] nums = new int[] { 1, 2, 3, 4, 5, 6 };
var evens = nums.Where(n => n % 2 == 0);
foreach (int n in evens)
{
Console.WriteLine(n); // 2 4 6
}
}
}
Selectによる射影
Selectは各要素を新しい値(射影)へ変換します。
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "cat", "lion", "tiger" };
var lengths = words.Select(w => w.Length); // transform to lengths
foreach (int len in lengths)
{
Console.WriteLine(len); // 3 4 5
}
}
}
結果の並べ替え
複数キーで並べ替えるにはOrderByに続けてThenByを使い、必要に応じてDescendingを追加します。
using System;
using System.Linq;
public sealed class City
{
public string Name;
public int Population;
public City(string name, int pop) { Name = name; Population = pop; }
}
public class Program
{
public static void Main(string[] args)
{
City[] cities = new City[]
{
new City("Rome", 2873000),
new City("Oslo", 634000),
new City("Riga", 605000),
new City("Rio", 6748000)
};
var sorted = cities
.OrderBy(c => c.Name) // primary
.ThenByDescending(c => c.Population); // secondary
foreach (City c in sorted)
{
Console.WriteLine(c.Name + " - " + c.Population);
}
}
}
Take/Skipによるページ分割
Skipは項目を飛ばし、Takeは固定数の項目を返します。これらを組み合わせてページ分割を実装します。
using System;
using System.Linq;
public class Program
{
public static void ShowPage(int[] data, int page, int pageSize)
{
var pageItems = data
.OrderBy(x => x) // define a consistent order
.Skip((page - 1) * pageSize)
.Take(pageSize);
Console.WriteLine("Page " + page + ":");
foreach (int x in pageItems) Console.WriteLine(x);
}
public static void Main(string[] args)
{
int[] nums = new int[] { 9, 1, 5, 2, 7, 3, 8, 6, 4 };
ShowPage(nums, 1, 3); // 1 2 3
ShowPage(nums, 2, 3); // 4 5 6
}
}
チェーン作成のヒント
ヒント:
- Whereで早い段階にフィルタリングします。
- Selectによる射影は後に行います(フィルタリングや並べ替えの後)。
- 予測可能な結果を得るため、Take/Skipの前にOrderByを使います。
- 各ステップを小さくし、わかりやすい名前を付けます。
フィルター演算子の名前
要約
要約: フィルタリングにはWhere、射影にはSelect、並べ替えにはOrderBy/ThenBy、ページ分割にはTake/Skipを使います。パイプラインは小さく、読みやすく保ちます。
よくある質問
「Select、Where、OrderBy、Take/Skip」レッスンは無料ですか?
はい。「Select、Where、OrderBy、Take/Skip」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。
「Select、Where、OrderBy、Take/Skip」で何を学びますか?
Whereでフィルターし、Selectで変換し、OrderBy/ThenByで並べ替え、Take/Skipでページングします。シンプルで読みやすいチェーンを作ります。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「Select、Where、OrderBy、Take/Skip」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IEnumerable パイプラインと遅延実行
- Select、Where、OrderBy、Take/Skip
- クエリ構文とメソッド構文