Почитать наверное все-таки придется.
1. Ваш print_r($sum) по идее должен выбросить хотя бы варнинг тк вы создали $sum в цикле, а пользуетесь им вне цикла. В шарпах он там не будет существовать.
2. В шарпах есть типы. Создавать числа как строки никто не будет. Смыла нет. Так же нет смысла преобразовывать число обратно в строку.
Создать список с числами (не строками) от 100 до 999.
var numberList = Enumerable.Range(100, 999).ToList();
Не надо конвертировать число в строку (ваш метод так себе). Надо использовать остаток от деления на 10. Для 650 вернет 11.
int sum = 0;
for (int n = x; n > 0; sum += n % 10, n /= 10);
На олимпиадах ненавидят Linq :D
Весь ваш пример, включая генерацию списка. Сохраняет сумму в новый список.
var numberList = Enumerable.Range(100, 999).ToList();
var result = numberList.Select(x =>
{
int sum = 0;
for (int n = x; n > 0; sum += n % 10, n /= 10);
return sum;
});
;