for WPF developers
Home Profile Tips 全記事一覧

Empty 拡張メソッドで空のシーケンスを作成する

(2017/03/08 17:22:06 created.)

Empty 拡張メソッドで空のシーケンスを作成することができます。メソッドの戻り値として使用したり、Aggregate 拡張メソッドや Union 拡張メソッドの中間値として使用したりします。

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 numbers = Enumerable.Empty<int>();
  11.  
  12.             var isOk = !numbers.Any();
  13.             Console.WriteLine(isOk ? "空です。" : "空ではありません。");
  14.  
  15.             Console.ReadKey();
  16.         }
  17.     }
  18. }


例えば次のように Aggregate 拡張メソッドのシード値として使われます。

Program.cs
  1. namespace Tips_Linq
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.  
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var numbers1 = new int[] { 1, 2, 3 };
  12.             var numbers2 = new int[] { 1, 2, 3, 4, 5 };
  13.             var numbers3 = new int[] { 4, 5 };
  14.             var numbersList = new List<int[]>() { numbers1, numbers2, numbers3 };
  15.  
  16.             var list = numbersList.Aggregate(Enumerable.Empty<int>(), (current, next) => next.Count() > 2 ? current.Concat(next) : current);
  17.             foreach (var number in list)
  18.             {
  19.                 Console.WriteLine(number);
  20.             }
  21.  
  22.             Console.ReadKey();
  23.         }
  24.     }
  25. }