2013-05-01から1ヶ月間の記事一覧

グループ化してセット演算子を適用する。 4

さらに再考。 ILookupに変換する部分を抽出。これでもうすこし使い勝手が良くなる。■グループ化セット演算 public static class GroupLinqExtensions { // groupのシーケンスをlookupに変換 public static ILookup<TKey, T> GroupToLookup<T, TKey>(this IEnumerable<IGrouping<TKey, T>> source) </igrouping<tkey,></t,></tkey,>…

グループ化してセット演算子を適用する。 3

さらに再考。 メソッドチェーンを繋げていくことを考えると、IEnumerable<IGrouping> を受け取って IEnumerable<IGrouping> を返すのが良い。■グループ化セット演算 public static class LinqExtensions { // グループ化したキーで重複除去 public stati…

グループ化してセット演算子を適用する。 2

再考。さっきよりは良い感じ。 Distinct は IEnumerable<IGrouping> を受け取って、他のセット演算は IEnumerable<IGrouping> を返すのがポイント。■グループ化セット演算 public static class LinqExtensions { // グループ化したキーで重複除去 (sourc…

グループ化してセット演算子を適用する。

要素の同一性を利用するのはDistinctだけじゃなくてセット演算子全部なので、グループ化してセット演算しやすくするクラスを作ってみたけどなんか複雑になっちゃった。■グループ化クラス public class GroupUniverse<T, TKey> { Func<T, TKey> keySelector; GroupSet set; publ</t,></t,>…

欲しかったのはDistinctじゃなくてOverだった。

単純な自作クラスだとpublic propertyが全部一致したら同一と見なすみたいな動作ではないのでDistinctでの重複要素の除外ができない。 これが結構厄介で、Tupleや匿名クラスに入れ替えたりしたけどなんかめんどくさいし、Distinctの拡張も考えてみたけどなん…