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 回答