C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のQueryable.Take()メソッドの使い方を解説

C#のLINQにおけるTake()メソッドは、シーケンス(コレクション)の先頭から指定した数の要素を取得するためのメソッドです。Queryableに対して使用することで、データベースクエリなどでも効率的に先頭N件のデータを取り出せます。

この記事では、実際のコード例を通じて、Take()メソッドの基本的な使い方をわかりやすく解説します。

サンプルとして使う配列

まず、次のような整数型の配列を用意します。

int[] marks = { 35, 72, 50, 90, 95, 85, 52, 67 };

この配列には8つの点数が格納されています。

OrderByDescendingと組み合わせて上位N件を取得する

Take()メソッドは単体でも使えますが、OrderByDescending()と組み合わせると「降順に並べ替えた上で、先頭から指定件数だけ取得する」という処理が簡単に書けます。

例えば、点数の高い順に上位5件を取得したい場合は、次のように記述します。

marks.AsQueryable().OrderByDescending(s => s).Take(5);

このコードでは、まずAsQueryable()で配列をIQueryableに変換し、OrderByDescending(s => s)で降順に並べ替え、最後にTake(5)で先頭の5要素を取得しています。

完全なコード例

ここまでの内容を踏まえた、実行可能な完全なサンプルプログラムです。

using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
    public static void Main() {
        int[] marks = { 35, 72, 50, 90, 95, 85, 52, 67 };
        // 上位5名の点数を取得
        IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).Take(5);
        foreach (int res in selMarks) {
            Console.WriteLine(res);
        }
    }
}

実行結果

このプログラムを実行すると、降順に並べ替えられた上位5件の点数が出力されます。

95
90
85
72
67

まとめ

Take()メソッドを使えば、コレクションの先頭から指定した件数の要素を簡単に取得できます。特にOrderByDescending()などの並べ替えメソッドと組み合わせることで、「トップN件」を求める処理を簡潔に実装できるのが大きなメリットです。ランキング表示やページネーションなど、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説

    GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と

  2. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数