Vous pouvez le faire dans Razor. Vous recevez dans votre template un objet App.Data ["your_pipeline_data"] par exemple App.Data ["Default"] en fonction de ce que vous avez filtré, trié, extrait dans votre requête/pipeline visuel 2sxc. Vous pouvez utiliser Linq sur cet objet pour manipuler les données et si vous placez ces données dans un objet de type énumérable, vous pouvez avoir les informations que vous voulez.
Un exemple:
@{
var termGroups = ((IEnumerable<dynamic>)AsDynamic(App.Data["Default"]))
.OrderBy(t => t.Nom) // sort terms
.GroupBy(l => l.Nom.Substring(0, 1).ToUpper()) // group by first letter
.OrderBy(s => s.Key); // ensure sorting at group-level
int groups= Enumerable.Count(termGroups);
}
est l'équivalent d'un GroupBy dans SQL.
Pour manipuler toutes les données, ne mettez pas la directive Linq
@{
var terms = ((IEnumerable<dynamic>)AsDynamic(App.Data["Default"]));
int count = Enumerable.Count(terms);
}
Après cela, il suffit d'utiliser la variable dans votre modèle comme ça:
There are @terms items in the list.
ou
There are @groups groups in the list.
Crédit: le code Linq est issu du tutoriel 2sxc AZ
Jamais pensé à LINQ comme un langage de requête, mais c'est exactement ce que c'est ... Il n'y a pas d'informations "GroupBy" sur la page 2sxc. Puis-je rechercher une documentation LINQ disponible sur le Web? Tous les opérateurs LINQ sont-ils disponibles pour les vues 2sxc? –
Je dirais que oui aux deux questions. Linq est là parce que SIC l'a intégré par défaut donc toute la syntaxe de Linq est disponible. Regardez la documentation IEnumerable: https://msdn.microsoft.com/en-us/library/system.linq.enumerable_methods(v=vs.110).aspx –
Juste un dernier addon. Avec ceci: foreach (var z dans les articles) {@ z.field} Je reçois la sortie suivante: A, A, B, C, D, D. Comment puis-je les regrouper ET les compter dans une seule ligne de code? J'ai besoin de produire ceci: A - 2; B - 1; C-1; D - 2, etc –