4 votes

Afficher la liste des valeurs séparées par des virgules sans virgule finale

J'ai une application ASP.Net-MVC utilisant LinqToSql. J'ai une table de sous-contrats, une table de lignes de service et une table de mapping/liens Service_lineToSubcontracts qui contient les subcontract_id et service_line_id. Sur la vue du sous-contrat, je voudrais lister les lignes de service correspondantes.

Cela fonctionne, mais a une virgule finale.

<% foreach (var sls in item.Service_lineToSubcontracts)
   { %>
   <%= Html.Encode(sls.service_line.service_line_name+", ") %>
<% } %>

Je pense que je devrais être en mesure d'utiliser quelque chose comme String.Join(", ", item.Service_lineToSubcontracts.ToArray()) mais je ne suis pas sûr de comment obtenir le tableau des noms de lignes de service.

3voto

Keltex Points 17151

Faites ceci :

<%= Html.Encode(string.Join(", ",
item.ServiceLineNames.Select(x=>x.service_line_name).ToArray())) %>

0voto

MauriDev Points 218

Dans la réponse Keltex, vous pouvez omettre d'appeler la méthode ToArray() puisque la méthode String.Join fonctionne avec n'importe quel IEnumerable.

Un conseil pour une forme plus concise et personnalisable est de remplacer la méthode ToString() de la classe des éléments de la collection, dans votre cas cela pourrait être fait comme suit:

public class Service_lineToSubcontract
{
  public Service_line service_line {get; set;}
  ...
  public override string ToString()
  {
    return service_line.service_line_name; // Ou ce que vous avez besoin
  }
}

et ensuite utiliser la forme plus concise:

<%= Html.Encode(String.Join(", ", item.Service_lineToSubcontracts)) %>

peut-être que ce conseil n'est pas le meilleur choix dans ce contexte mais il simplifie beaucoup lorsque vous avez des collections de paires clé-valeur ou si vous avez besoin d'une liste séparée par des virgules de descriptions composées de plus d'une propriété

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X