C# LINQのSkipLastメソッドの使い方をわかりやすく解説
C#のLINQで利用できるSkipLast()メソッドは、コレクションの末尾から指定した数の要素をスキップし、残りの要素を返すメソッドです。OrderByDescending()などの並べ替えメソッドと組み合わせることで、柔軟なデータ抽出が可能になります。
サンプルデータの用意
ここでは、次のような整数型の配列を使用します。
int[] marks = { 45, 88, 50, 90, 95, 85 };
SkipLast()とラムダ式を組み合わせた書き方
この配列に対して、OrderByDescending()で要素を降順に並べ替えた後、SkipLast(2)を使って末尾の2つの要素をスキップしてみましょう。
IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).SkipLast(2);
完全なサンプルコード
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] marks = { 45, 88, 50, 90, 95, 85 };
IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).SkipLast(2);
Console.WriteLine("Skipped the marks of last two students...");
foreach (int res in selMarks)
Console.WriteLine(res);
}
}
実行結果
Skipped the marks of last two students... 95 90 88 85
処理の流れの解説
上記のコードでは、まず元の配列 { 45, 88, 50, 90, 95, 85 } を降順に並べ替えると「95, 90, 88, 85, 50, 45」となります。その後、SkipLast(2)によって末尾の「50」と「45」が除外されるため、最終的には「95, 90, 88, 85」が出力されます。
なお、SkipLast()は.NET Core 2.0以降および.NET Standard 2.1以降で使用可能なメソッドです。従来の.NET Frameworkでは利用できない場合があるため、開発環境のバージョンに注意してください。
-
【初心者向け】C#のLINQ Whereメソッドの使い方を徹底解説!条件に合う要素を抽出する方法
C# LINQのWhereメソッドとは? C#のLINQに用意されているWhereメソッドは、指定した条件(述語:Predicate)に基づいて、コレクションや配列の中から該当する要素だけを抽出(フィルタリング)するためのメソッドです。 データの一覧から特定の条件を満たす項目のみを取り出したい場面は開発現場で非常に多く、WhereメソッドはLINQの中でも特に使用頻度の高い機能といえます。 例えば、以下のように記述すると「70以上の要素」だけを取得できます。 Where((n, index) => n >= 70); このラムダ式では、各要素 n が70以上であるかどうかを判定し、
-
C# LINQ Distinct()メソッドでリストから重複要素を削除する方法
C#のLINQで重複しない要素(一意の値)だけを取得したい場合は、Distinct()メソッドを使用します。このメソッドは、シーケンス内の重複する要素を取り除き、各要素を1度だけ返してくれます。 重複要素を含むリストの準備 まずは、重複した要素を含むリストを用意しましょう。 List<int> points = new List<int> { 5, 10, 5, 20, 30, 30, 40, 50, 60, 70 }; このリストには「5」と「30」がそれぞれ2回含まれています。 Distinct()メソッドで重複を除去する 重複を除いた要素を取得するには、次のように