2017-10-08 4 views
-2

Une chose que je n'ai pas pu faire est de rechercher des données à des fins statistiques.2sxc - Données de requête pour les statistiques

En Fnl, par exemple, vous pouvez utiliser toutes les capacités du serveur SQL, peu je ne peux toujours pas comprendre comment accéder aux données en 2sxc pour atteindre le même but ...

Est-il possible que je peux placer les données dans une liste dans une vue sql (table temporaire), puis l'interroger? Ou utilisez une autre méthode pour accéder aux données et l'interroger?

Cordialement, João

Répondre

1

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

+0

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? –

+1

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 –

+0

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 –