for WPF developers
Home Profile Tips 全記事一覧

Where 拡張メソッドでシーケンスをフィルタリングする

(2017/03/14 11:26:49 created.)

Where 拡張メソッドはシーケンスの要素をフィルタリングし、条件を満たさない要素を除外します。

Program.cs
  1. namespace Tips_Linq
  2. {
  3.     using System;
  4.     using System.Linq;
  5.  
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             var numbers1 = Enumerable.Range(1, 100);
  11.  
  12.             var numbers2 = numbers1.Where(x => x % 17 == 0);
  13.             Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", numbers2));
  14.  
  15.             Console.ReadKey();
  16.         }
  17.     }
  18. }


上記のサンプルコードでは、1 から 100 までの整数で 17 の倍数のみをフィルタリングしています。Where 拡張メソッドにはインデックス番号を扱うためのオーバーロードも用意されています。

Program.cs
  1. namespace Tips_Linq
  2. {
  3.     using System;
  4.     using System.Linq;
  5.  
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             var numbers1 = Enumerable.Range(1, 100);
  11.  
  12.             var numbers2 = numbers1.Where((x, i) => (i > 50) && (x % 17 == 0));
  13.             Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", numbers2));
  14.  
  15.             Console.ReadKey();
  16.         }
  17.     }
  18. }


このサンプルコードでは、インデックス番号が 50 より大きい要素のうち 17 の倍数となる要素のみをフィルタリングしています。