Почему не String.Присоединиться добавить разделитель в цикл

#c# #arrays #string

#c# #массивы #строка

Вопрос:

Я показываю категории моего i-го продукта в представлении, но я хочу поставить запятые между ними.

Мое мнение

введите описание изображения здесь

 @for (int i = 0; i < Products.Count(); i  )
{
    <tr>
        <td>
            <span> @Model.Products[i].ProductName </span>
            @foreach (var item in Model.Products[i].ProductCategories)
            {
                <span>@string.Join(", ", item.Category.CategoryName)</span>
            }
        </td>
   </tr>
 

введите описание изображения здесь

Почему String .Соединение не работает, чего мне не хватает

Я хочу это

Компьютер, технология, рабочий стол

Комментарии:

1. ну, item.Category.CategoryName это всего лишь один элемент . для объединения вам нужно как минимум два элемента, поэтому запятая может быть промежуточной. вырежьте свой foreach и вместо этого выберите categorynames в одном массиве.

2. @FranzGleichmann спасибо, я не знаю, как я это пропустил

Ответ №1:

item.Category.CategoryName представляет только одно имя категории, поэтому при объединении , было добавлено no (запятая). Если вы хотите объединить все категории продуктов, используйте приведенный ниже код

 <tr>
        <td>
            <span> @Model.Products[i].ProductName </span>
            <span>@string.Join(", ", Model.Products[i].ProductCategories.Select(p => p.Category.CategoryName))</span>
        </td>
   </tr>
 

Приведенный выше код повторит все ProductCategories и присоединится к тем, которые используют string.Join