※基礎すぎる記事です
LINQで何ができるか
結論としては、
配列やコレクションの中のデータに対して、
条件を加えて取り出したり、加工したりする事ができます。
例えばこんな感じ。
static void Main(String[] args) { List<int> number = new List<int>(); number.Add(10); number.Add(20); number.Add(30); //25以上の数字だけ取り出す var selectNumber = number.Where(n => n >= 25); foreach(var i in selectNumber) { Console.WriteLine(i); } }
実行結果
30
LINQをつかっている部分がここです。
var selectNumber = number.Where(n => n >= 25);
因みにLINQを使わなければ、上の1行をこんな長く書かなきゃいけないです。
List<int> selectnumber = new List<int>(); for (int i = 0; i < number.Count; i++) { if(number[i] >= 25) { selectnumber.Add(number[i]); } }
なのでLINQは積極的に使いたいところですね。
最初はWhere(n => n >= 25)
について「何これ?」と思いますが、
これはラムダ式というLINQで条件を指定するための書き方です。
LINQを使うのであれば、まず初めにこのラムダ式を覚える必要があります。
ラムダ式とは
ラムダ式とは、で検索すると色々難しい説明が出てきますが、
最初は戻り値があるメソッドをシンプルに書く方法
くらいの理解でいいかと思います。
下記がラムダ式の書式
引数 => 計算式
さっきの例でいうとここがラムダ式です
n => n >= 25
わかりづらいので引数に10を足して返却するメソッドがあったとしましょう。
int Add(int n) { return n + 10 ; }
これをラムダ式で書くと下記のようになります。
n => n + 10;
引数が2つの場合はこんな感じで()でくくります
(n,a) => n + a;
条件が複数の場合
先ほどは25以下とデータという限定した条件でした。
複数の条件の場合は、下記で問題ないようです。
List<int> number = new List<int>();
number.Add(10);
number.Add(20);
number.Add(30);
//15以下または25以上
var selectnumber = from n in number
where n <= 15 || n >= 25
select n;
foreach (var i in selectnumber)
{
Console.WriteLine(i);
}
実行結果
10 30
LINQのメソッド一覧
Where | 条件を満たす要素をすべて返します |
---|---|
Select | 各要素に処理を行って新しいデータを返します |
OrderBy | 昇順に並べ替えたデータを返します |
OrderByDescending | 降順に並べ替えたデータを返します |
All | すべての要素が条件を満たしているか判定します |
Any | 条件を満たす要素が含まれているか判定します |
これはほんの一部で他にもたくさんメソッドが存在するのですが、ご丁寧にサンプルコードも併せて書いてくださっている記事を発見しました。
ありがたい限りです。
最後に
今回はあくまでも前提として入れておく必要がある最低限の知識になりますので、他人が書いたLINQを改修しなければいけなかったり、もっと複雑な式を理解する必要があったりする場合は、これだけでは苦しむと思います。
自分自身理解を深めるためにも、追々LINQの応用編をアップしたいなと思ってます。(余裕があったら)
ではでは