2015年06月03日

LINQ to Objectサンプル(08): 条件を満たす要素をN個取り出す

  
配列などから、条件を満たす要素を指定した個数だけ取り出す例です。
ここでは、正の数を5個取り出しています。


■ループを使ったコード
var list = new List<int> { 9, 7, -5, -4, 2, 5, 4, 0, -4, 8, -1, 0, 4 };
var ans = new List<int>();
int count = 0;
foreach (var n in list) {
    if (n > 0) {
        ans.Add(n);
        count++;
        if (count >= 5)
            break;
    }
}
ans.ForEach(Console.WriteLine);

■LINQを使ったコード
var list = new List<int> { 9, 7, -5, -4, 2, 5, 4, 0, -4, 8, -1, 0, 4 };
var ans = list.Where(n => n > 0).Take(5);
ans.ToList().ForEach(Console.WriteLine);

LINQでは、WhereメソッドとTakeメソッドを使います。
Takeメソッドは、指定した個数分の要素がなかったときでもエラーにはならず、最後の要素までを取得します。
LINQのコードがすばらしいのは、型安全性を保ちつつ、型がintに固定されていない点です。longでも、decimalでもそのまま使えます。
上記コードでは、リストのコンストラクタの呼び出しの時だけ、型情報 int が現れるだけです。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52422649