バナナラボ

Vtuber美作ワニのブログです

【実装のヒント】Linqの活用【Untiy】

バナナラボの美作です。

今日はC#の機能のひとつLinqの活用法を紹介したいと思います。

今日の記事は以下の記事も合わせて読んでください。

bananalabwani.hatenadiary.com

Linqとは

docs.microsoft.com

要は配列をいい感じに操作してくれる機能です。 大雑把な説明だけしているので詳しい仕組みはリンク先から見てもらえると。

使い方

usingすると使えるようになります。

using System.Linq;

IEnumerable を実装に持つクラスに使えるようになります。難しく言いましたが以下のようなヤツが対象です。

List
Dictionary
Array(int[] とか)

今回よく使う機能だけ紹介したいと思います。

Where

Where は配列の中から条件に合うものだけを取り出すことができます。

var list = new int[] { 1, 2, 3, 4, 5, 6 };
// IEnumerable<T>になる、今回だとIEnumerable<int>
var result = list.Where(x => x % 3 == 0 );

// resultは3, 6になる。

OrderBy

OrderBy は指定した値でソートすることができます。

var list = new int[] { 6, 2, 4, 3, 1, 5 };
// IEnumerable<T>になる、今回だとIEnumerable<int>
var result = list.OrderBy(x => x);

// resultは1, 2, 3, 4, 5, 6になる

また OrderByDescending で降順で出すことができます。

Select

Select は指定した値を別の形に変換することができます。

var list = new int[] { 1, 2 };
// IEnumerable<T>になる、今回だとIEnumerable<string>
var result = list.Select(x => x.ToString());

// resultは "1", "2" になる

Take

Takeは指定した値分の配列を取得することができます。

var list = new int[] { 1, 2, 3 };
// IEnumerable<T>になる、今回だとIEnumerable<string>
var result = list.Take(1);

// resultは 1 になる

Skip

Skipは指定した値分だけ抜いた配列を取得することができます。

var list = new int[] {1, 2, 3};
// IEnumerable<T>になる、今回だとIEnumerable<string>
var result = list.Skip(1);

// resultは 2, 3 になる

FirstとFirstOrDefaultとLastとLastOrDefault

FirstWhereに近い内容で、検索にヒットした先頭のものを取得します。

Lastはその反対となります。

FirstOrDefaultとの違いはFirstの場合はデータが絶対ある必要がありますが、***OrDefaultはない場合は型に対応した初期値*1を取得します。

また出力結果も配列から1つの要素へと変わります。

ToArrayとToList

ToArrayToListはそれぞれに対応した型へと変換します。LinqIEnumerable<T>へと変換するため、それぞれに対応した型にしたいケースがあります。

またこの変換を行った場合、配列そのものは別の要素として扱われます*2

ToDictionaryについて

別途記事にします。

最後に

Linqは非常に便利なので活用できるところは積極的に使っていくと開発が楽しくなると思います!

宣伝

YouTubeでゲーム実況・ゲーム開発の動画投稿および配信をやっています! もしご興味があればチャンネル登録・高評価よろしくおねがいします!

www.youtube.com

*1:intだと0, boolだとfalseなど

*2:ただしひとつひとつの要素は同じ参照となります