2016-06-17 5 views
1

Ich würde gerne wissen, ob es möglich ist, mathematische Operation (z. B. Summe) in Sitecore schnelle Abfrage oder auf andere Weise zu tun.Sitecore-Abfrage, ist es möglich, die Summe eines Integer-Feldes zu berechnen

Ich habe 100 von Artikeln mit Feld 'Geld ausgeben' Datentyp 'Integer'. Ich möchte den schnellen Weg kennen, um die Summe dieses Feldes für eine bestimmte Person/Benutzer zu berechnen.

Hier ist, was ich tue, verwende ich schnelle Abfrage, um die Elemente zu erhalten und dann die Summe zu berechnen.

var searchStr = "{30218229-CFA8-4BC3-9F01-01E3E6469E51}"; 
var query = string.Format("fast:/sitecore/content/Intranet/User/Detail/*[@Active ='1']//*[@Profile Id=\"%{0}%\"]", searchStr); 
var items = Sitecore.Context.Database.SelectItems(query); 
    //Calculate sum 
var sum = items.Aggregate(0, (x, y) => x + GeneralHelper.ConvertToInt16(y["Money spend"])); 

Ich möchte wissen, wie ich die Summe Berechnungsprozess schnell machen?

+5

Naw paaren müssen. Sie müssen die richtige Indizierungstechnologie verwenden. Ich schlage vor, dass Sie in die Sitecore.ContentSearch-Dokumentation schauen - es ist OOTB aktiviert. –

Antwort

1

Ich denke, der beste Weg ist, Indizes verwendet werden (als Mark bereits erwähnt):

  • einen benutzerdefinierten Index für die Benutzer erstellen und geben Sie Ihre „Geld ausgeben“ Wert darin (und auch die ‚aktive‘ und "Profil-ID", während Sie diese abfragen. Stellen Sie sicher, dass das "Geld ausgeben" gespeichert ist.
  • eine benutzerdefinierte Klasse erstellen, die von SearchResultItem Ableiten des einschließen Feld als
  • die contentsearch api Benutzer verwenden Eigenschaft „Geld ausgeben“ abfragen, wie Sie mit der schnellen Abfrage haben (Index schneller sein wird) und die benutzerdefinierte Klasse verwenden dass Sie nur die Ergebnisse erstellt sammeln
  • Verwendung Linq zu berechnen, was Sie
Verwandte Themen