11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エムティーアイAdvent Calendar 2021

Day 5

LINQでよく使うメソッド構文一覧(C#)

Last updated at Posted at 2021-12-07

はじめに

本記事は エムティーアイ Advent Calendar 2021 の5日目の記事です。
昨日は @uhooi議事録を書くコツとテンプレート でした。

C#のLINQについて、よく使うメソッド構文のメソッドを紹介します。

「LINQ」とは?

「Language-Integrated Query」の略で、直訳すると「言語に統合されたクエリ」です。
ざっくりいうと「配列をかんたんに操作する便利機能」です。

LINQの構文の種類

LINQにはクエリ構文とメソッド構文の2種類があります。

以下の例はどちらも同じ意味です。

クエリ構文
var scores = new int[] { 97, 92, 81, 60 };

IEnumerable<int> scoreQuery =
    from score in scores
    where score > 80
    select score;
メソッド構文
var scores = new int[] { 97, 92, 81, 60 };

IEnumerable<int> scoreQuery = scores
    .Where(score => score > 80);

クエリ構文はSQLに似ており、メソッド構文は関数型プログラミングに似ています。

2つの構文にパフォーマンスの違いはありません。

公式ドキュメントではできる限りクエリ構文を使うことが推奨されています。
しかし私はメソッド構文のほうが好きなので、本記事ではメソッド構文を紹介します。

Twitterでアンケートを取ったところ、僅差でクエリ構文を使っている人のほうが多かったです。

環境

  • IDE:Visual Studio Professional 2019 for Mac Version 8.10.14 (build 17)

LINQのセットアップ

System.Linqusing するのみです。

using System.Linq;

LINQでよく使うメソッド構文一覧

LINQでよく使う、IEnumerable に実装されているメソッド構文の一覧です。

私はSwiftが好きなので、似ている配列のメソッドを載せています。

メソッド名 説明 Swift
.Select() 要素を変換する .map()
.Select().Where(e => e is not null) 要素を変換し、 null の要素を除外する .compactMap()
.Where() 要素を指定した条件で絞り込む .filter()
- 要素を順番に繰り返す .forEach()
.OrderBy() 要素を昇順に並び替える .sorted()
.OrderByDescending() 要素を降順に並び替える .sorted(by: >)
.Reverse() 要素を逆順に並び替える .reversed()
.Any() 指定した条件に一つでも合致する要素があるかどうか .contains()
.All() 指定した条件に全要素が合致するかどうか .allSatisfy()
.Contains() 指定した要素が含まれているか .contains()
.First() 最初の要素を返す .first()
.Last() 最後の要素を返す .last()
.Skip({数字}) 先頭から指定した数の要素をスキップしたリストを返す array[{数字}...]
.Take({数字}) 先頭から指定した数の要素を返す array[..<{数字}]
.Max() 要素の最大値を返す .max()
.Min() 要素の最小値を返す .min()
.Average() 要素の平均値を返す array.reduce(.zero, +) / array.count
.Sum() 要素の合計を返す .reduce(.zero, +)
.Count() 要素数を返す .count
.Distinct() 重複を除く Set(array)
.ToArray() 配列に変換する -
.ToList() リストに変換する -

おわりに

これでLINQを使って配列やリストをかんたんに操作できるようになりました :relaxed:

以上 エムティーアイ Advent Calendar 2021 の5日目の記事でした。
明日は @rtok さんで Protocol Oriented Programmingを使ってみて思ったこと です。

参考リンク

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?