読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Linq入門記-44 (LINQ To Object, Empty)

今回は、Emptyメソッドについてです。


Emptyメソッドは、文字通り空のシーケンスを返します。
メソッドの戻り値に使ったり、UnionやAggregateを行う際の中間値として
よく利用したりします。


書式は以下の通り。

public static IEnumerable<TResult> Empty<TResult>()


以下、サンプルです。

    #region LinqSamples-41
    public class LinqSamples41 : IExecutable
    {
        public void Execute()
        {
            //
            // Emptyメソッドは、文字通り空のシーケンスを作成するメソッドである。
            // Unionする際や、Aggregateする際の中間値として利用されることが多い。
            //
            Console.WriteLine("COUNT = {0}", Enumerable.Empty<string>().Count());
            
            //
            // 指定されたシーケンスから合計値が100を超えているシーケンスのみを抽出.
            //
            // Aggregateのseed値として、Enumerable.Emptyを使用している。
            //
            var sequences = new List<IEnumerable<int>> 
                            { 
                                Enumerable.Range(1, 10), 
                                Enumerable.Range(30, 3), 
                                Enumerable.Range(50, 2),
                                Enumerable.Range(200, 1)
                            };
                            
            var query = 
                    sequences.Aggregate(
                        Enumerable.Empty<int>(),
                        (current, next) => next.Sum() > 100 ? current.Union(next) : current
                    );
            
            foreach (var item in query)
            {
                Console.WriteLine(item);
            }
        }
    }
    #endregion


実行結果は以下の通りです。

  COUNT = 0
  50
  51

================================
過去の記事については、以下のページからご参照下さい。