(C#) LINQとラムダ式を理解する

cshrp-linq-lambda-expression

 

C#を勉強していて出てくる、LINQとラムダ式
両者を理解するためのメモ

 

LINQとラムダ式をセットで学ぶ理由

LINQとラムダ式をセットで学ぶ理由は、
LINQはラムダ式を使用するため、セットで覚えると効率が良いため

上記を念頭に記事を読み進めていただくと幸い。

 

ラムダ式とは

ラムダ式とは、戻り値を返すメソッドを、簡単に書く方法のこと。
書式は下記。

(引数) => 戻り値の計算式

ラムダ式の方がスッキリとメソッドを記載できているのが分かる。

 

ラムダ式の例

簡単にと書かれてもわからないと思うので、
普通のメソッドと、ラムダ式のメソッドを比較して理解する。

まずは通常のメソッドを用意。
引数に3を足した数をreturnするメソッド

#通常のメソッド
int Add(int n)
{
    return n+3;
}

 

上記をラムダ式で書くと下記のようになる

#ラムダ式
n => n+3

=>より左が引数で、右が戻り値
非常に完結に記述できるのが分かる。

引数が二つになった場合は下記のようになる

#通常
int Add(int a, int b)
{
    return a+b;
}

#ラムダ式
(a, b) => a+b

 

計算だけでなく、真偽値を返したりもできる。

#通常
bool IsMoreThanZero(int n)
{
return n >= 0;
}

#ラムダ式
n => n>=0;

 

上記のように、ラムダ式を使うと、
条件と戻り値を完結に記述できる特徴がある。

 

LINQとは

LINQとは、配列やコレクションに格納されたデータを、簡単に扱うことができる仕組み。
具体的には、配列やコレクションから、条件にあった値だけ取り出したり、取得したデータになんらかの処理をしたりといったことができる。
そして、この条件を指定する時に、ラムダ式を使用する。

linq

 

書式は下記

配列orコレクション.LINQメソッド(ラムダ式);

 

 

LINQを使った例

static void Main(string[] args)
{
    int[] nums = { 10, 50, 80, 100, 120 };

    // LINQを使って、numsから、100以上の数字を取り出す
    var linqNum = nums.Where(n => n>=100);

    // 取り出した数字を表示する
    foreach (int n in linqNum)
    {
        Console.WriteLine(n);
    }
}
#結果
100
120

 

LINQのWhereメソッドを使って、
配列numsから、100以上の数字を絞り込んでいるのが分かる。
Whereメソッド内はラムダ式で記述されている。

 

上記のように、LINQとラムダ式をセットで使用することで、
配列やコレクションを簡単に操作できる。

 

LINQのメソッド(一部)

 

ではLINQの概要が理解できたところで、
実際にLINQのメソッド(一部)を紹介する。

 

Where(ラムダ式)

条件を満たす要素を返す。

 

Select(ラムダ式)

各要素に処理をして、新しいデータを返す。

 

OrderBy(ラムダ式)

昇順に並べ替えたデータを返す。

 

OrderByDescending(ラムダ式)

降順に並べ替えたデータを返す。

 

Distinct(ラムダ式)

重複を除いたデータを返す。

 

Max(ラムダ式)

最大値を返す。

 

Min(ラムダ式)

最小値を返す。

 

Average(ラムダ式)

平均値を返す。

 

Sum(ラムダ式)

合計値を返す。

 

Count(ラムダ式)

要素数を返す。

 

All(ラムダ式)

全ての要素を条件を満たしているか判別する。

 

Any(ラムダ式)

条件を満たす要素が含まれているか判定する。

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。