聚集表達式AggregateExpression主要包括幾種:Avg(),Count(),Exists(),Max(),Min(),Single()和Sum()。其中對於Sum(),在我看來主要有兩種用法,一種是Group時的合計,另一種是整個頁面某個列的值的合計。但是對於Count(),由於以前對DevExpress的了解不足,所以對Count()也不是很了解。
今天就是在開發報表的過程中遇到了一個問題,經過DevExpress支持的幫助,通過Count()完成了較為復雜的功能。具體情況:我有三條記錄,如下圖1所示,想生成如圖2所示的報表內容,怎么做呢?
如果放在以前,我可能需要創建2個CalculatedField,並且分別添加表達式內容:Iif([VisitStatus]=='VISITED',1,0) 和Iif([VisitStatus]=='CANCELLED',1,0),然后再使用Sum()與Group結合的方式來實現,但有了Count()情況便有了不同,具體實現如下:
首先,我們也需要建立兩個CalculatedField,並且分別添加表達式內容:[][[^.ClinicName] == [ClinicName] AND [VisitStatus] == 'VISITED'].Count()和[][[^.ClinicName] == [ClinicName] AND [VisitStatus] == 'CANCELLED'].Count(),從中我們可以看到,具體的數量已經通過遍歷ClinicName並且限制VisitStatus實現了,所以無需向以前一樣再使用Sum()。
通過以上對比,方案1可以作為方案2的一個備用,兩個的相同點都是僅在GroupHeader中進行操作,並且都可以實現最終結果,但兩者還是有着些許的區別,特別是在使用GroupBy時,具體區別如下所示:
具體聚集表達式AggregateExpression的具體用法參見以下官網鏈接: