Instead of specifying object
you should specify the group and select keys as generic parameters. Their type will be automatically inferred from usage and the caller can specify a lambda with any return type.
public IEnumerable<T> GetList<TGroupKey, TOrderKey>(IEnumerable<T> collection,
Func<T, TGroupKey> groupBy,
Func<T, TOrderKey> orderBy,
int howMany)
{
var group = collection
.GroupBy(groupBy)
.Select(x => x.OrderBy(orderBy).Take(howMany))
.Aggregate((l1, l2) => l1.Concat(l2));
return group.ToList();
}