Точно так же, как сказано: результат a + b
равен int
, но вы хотите, чтобы он был char
.Чтобы получить compile , вы можете просто использовать:
var res = reverse.Aggregate((a,b)=>(char) (a+b));
... но я не думаю, что это сделает то, что вы хотите.
Iпредлагаю вам не использовать LINQ для этого, чтобы начать с:
private string Reverse(string strValue)
{
char[] chArray = strValue.ToCharArray();
Array.Reverse(chArray);
return new string(chArray);
}
Обратите внимание, что не работает должным образом с такими вещами, как объединение символов, суррогатные пары и т. д.1017 * Если вы действительно хотите использовать LINQ, вы можете сделать это с помощью:
private string Reverse(string strValue)
{
return new string(strValue.Reverse().ToArray());
}
Нет необходимости звонить Aggregate
.Если вы действительно хотите сделать его медленным и использовать конкатенацию строк с Aggregate
(это будет O (n 2 )), вы можете сделать это следующим образом:
private string Reverse(string strValue)
{
return strValue.Reverse().Aggregate("", (str, c) => str + c);
}
Здесь мы указали начальное значение строки, поэтому параметр str
будет строкой, а +
будет конкатенацией строк, а не символом добавление .
Вы можете сделать его более эффективным, используя StringBuilder
:
private string Reverse(string strValue)
{
return strValue.Reverse()
.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c))
.ToString();
}
... но я все еще не уверен, что оно того стоит ...