Выражение fun
является нетипизированным выражением, которое называется группа методов .
Поскольку группа методов не имеет типа, компилятор не может определить параметры типа универсального метода OrderBy
.
Вам необходимо явно передать параметры типа, например:
a = a.OrderBy<string, int>(fun).ToArray();
Или,
a = a.OrderBy(new Func<string, int>(fun)).ToArray();