【C#】Linq の基本

  • |
【C#】Linq の基本
   

C#で便利な機能といえば「Linq」です。
上手く使えば、コードも読みやすくなり、また複雑処理も実装をすることができます。
このLinqについて、あまり詳しくなかったので、今回勉強をしてみました。

Linq の 基本

  • form句から始まる
  • 条件式( whereなど)を入れる
  • select もしくは group句で終わる
int[] nums = { 1, 2, 3, 4, 5 };
// n:範囲変数 nums:データソース
var lists = from n in nums
			where n > 3
			select n;

Linqで検索をした クエリ変数(上記ではlists)は、foreachを使って取り出すことができます。
foreach (int i in lists) {
     Debug.LogError ("i:" + i);
}

クエリ変数はIEnumerableのインターフェイスを実装しているので、型の推論ができるのでvar型を使うことができます。

where

条件式として利用するのがwhere句です。
bool型を返す条件式であれば、どんな式でも使うことができます。
一つの条件式だけではなく、複数の条件式を使うことができます。
int[] nums = { 1, 2, 3, 4, 5 };
var lists = from n in nums
	where n > 3
	where n < 5
	select n;

&#91;/c&#93;

<h3>orderby</h3>
並べ替えを行う場合には、[oederby]を使うのが便利です。

int[] nums = { 3, 4, 1, 2, 20, 9 };
var lists = from num in nums
		    orderby num
		    select num;

orderbyは、昇順と降順が指定できます。
昇順はデフォルトなので、何も指定をしない場合は自動的に昇順になります。
//降順
var lists = from num in nums
		    orderby num descending
		    select num;


select

条件式で得られた値を返すのでselect句です。
ただ値を返すのではなく、任意のデータ形式に変換をすることもできます。

group

keyを指定してグループを作成します。
型は、IGroupoingになり、foreachを使って中身を取り出します。
var hoge = from num in nums
		      where 条件式
		      group (範囲変数) by (キー) ;

ラムダ式

これまではクエリ構文と呼ばれる記載をしてきましたが、実際に利用する際にはクエリメソッドと「ラムダ式」を使ったほうが可視性が上がります。

Where

クエリメソッド[Where]を使う場合、下記のような記述になります。
かなりすっきりとしているのではないでしょうか?
var lists = num.Where (n => n > 3).Select (n => n);
foreach (int i in lists) {
	Debug.LogError ("中身:" + i);
}


OrderBy

同じような感じで、OrderByも使うことができます。
降順では[OrderByDescending]を利用します。
var lists = nums.OrderBy (n => n).Select (n => n * 2);
foreach (int i in lists) {
	Debug.LogError ("中身:" + i);
}

その他

これ以外にも色々なメソッドが用意されています。
int[] nums = { 1, 2, 3, 4, 5 };
var _max = nums.Max(); // 最大値
var _min = nums.Min(); // 最小値
var _sum = nums.Sum(); //足し算

// 指定された条件を満たしていれば、trueを返す
var list = nums.Any (n => (n % 2) == 0);


独習C# 第3版独習C# 第3版
ハーバート・シルト,エディフィストラーニング株式会社 矢嶋聡

翔泳社
売り上げランキング : 8821

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...