Извините, это довольно просто, но на всю жизнь я не смог его решить:
У меня есть это:
public static IHtmlString HrefLangLinks(this PageData currentPage)
{
var availablePageLanguages = currentPage.ExistingLanguages.Select(culture => culture.Name).ToArray();
foreach (string listitem in availablePageLanguages)
{
var Output = string.Join(",", listitem);
}
// Dictionary<String, String>
return new HtmlString(Output.ToString());
}
Я хотел бы получить результаты цикла foreach, выведенные в возвращаемом значении. Но Visual Studio сообщает мне, что «Вывод» (экземпляр в моем возвращаемом значении) не существует в текущем контексте.
Я думал, что смогу решить эту проблему, добавив var Output = "";
вне моего цикла foreach, но это не сработало.
Попробуйте return new HtmlString(string.Join(",", availablePageLanguages))
.
Определите вывод перед входом в цикл foreach, а затем присвойте ему значение:
var Output = "";
foreach (string listitem in availablePageLanguages)
{
Output = string.Join(",", listitem);
}
Кроме того, мне интересно, действительно ли вам нужен цикл for в этом случае, поскольку вы также должны иметь возможность сделать это сразу, если availablePageLanguages представляет собой массив строк (string[]):
var Output = String.Join(" ", availablePageLanguages));
Спасибо тебе за это. Я не обращал внимания на «var» в моем цикле foreach, который создавал новый экземпляр переменной, верно?
Если я не ошибаюсь, это решение будет включать только последний элемент списка из availablePageLanguages (поскольку вывод перезаписывается для каждого элемента списка). Я считаю, что это то, что ОП имел в виду под «не сработало». Как оказалось, у нас обоих была одна и та же идея. Я думаю, что ваше редактирование является правильным решением.
Определите «Это не сработало»