0

私は次の方法を持っています

public static List<T> MergeAndSort<T>(List<List<T>> listOfLists) where T : Foo
    {
        List<T> list = listOfLists.SelectMany(bunch => bunch).ToList();

        list.OrderBy(x => x.FooLongMember);

        return list;
    }

完全に汎用的なバージョンを提供するソリューションを探しています。現在、そのようなメンバーで注文するには、T が何であるかを指定するだけでなく、Foo 内で特定のメンバー名を指定する必要があります。メンバーは現在 long 型です。少なくともタイプ Foo のリストのリストを渡すことを指定する必要がないように関数を書き直すことはできますか? C#、.Net4.0 をターゲットにしています。ありがとう

4

1 に答える 1

2

このようなもの?

public static IOrderedEnumerable<T> MergeSortWrapper<T,TKey>(
      IEnumerable<IEnumerable<T>> listOfLists,
      Func<T,TKey> keySelector) 
{
    return listOfLists.SelectMany(bunch => bunch)
                      .OrderBy(keySelector);
}

-

var result = MergeSortWrapper(listOfListOfFoos, x => x.FooLongMember).ToList();
于 2012-05-05T10:03:43.120 に答える