ToLookup 拡張メソッドで要素をグループ化する
(2017/03/14 11:22:33 created.)
ToLookup 拡張メソッドは指定されたキーで分類分けします。同様の機能として GroupBy 拡張メソッドがあります。使い方は GroupBy 拡張メソッドと同じであるため、「GroupBy 拡張メソッドで要素をグループ化する」を参照してください。
これらの拡張メソッドの違いを下表にまとめます。
項目 | GroupBy 拡張メソッド | ToLookup 拡張メソッド |
---|---|---|
keySelector によるキーの指定 | ○ | ○ |
elementSelector による要素の指定 | ○ | ○ |
resultSelector による結果値の射影 | ○ | × |
comparer によるキーの比較方法の指定 | ○ | ○ |
戻り値 | IEnumerable<T> | ILookup<T> |
ILookup<T> インターフェースは IEnumerable<T> インターフェースと違って次のようなプロパティなどが用意されています。
ILookup インターフェースの定義
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
namespace System.Linq
{
public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable
{
/// <summary>
/// グループ数を取得します。
/// </summary>
int Count { get; }
/// <summary>
/// インデックス指定によって要素を取得します。
/// </summary>
IEnumerable<TElement> this[TKey key] { get; }
/// <summary>
/// 指定したキーが存在するかどうかを確認します。
/// </summary>
/// <returns>指定したキーが存在する場合に true を返します。</returns>
bool Contains(TKey key);
}
}
resultSelector が必要か、戻り値として ILookup<T> が必要かという観点から GroupBy 拡張メソッドと ToLookup 拡張メソッドを使い分けるようにしましょう。
Tweet