2017-08-01 29 views
0

我有以下查詢來獲取一組文檔與他們的頁面訪問量返回與kentico GET文件聯接的列

var activityQuery = ActivityInfoProvider.GetActivities() 
       .Columns($"COUNT(*) AS [{ColumnNames.PageViews}]", ColumnNames.ActivityValue) 
       .WhereEquals(ColumnNames.ActivityType, ActivityTypes.BlogPostView) 
       .GroupBy(ColumnNames.ActivityValue) 
       .ToString(true); 

var query = DocumentHelper.GetDocuments(PageTypes.BlogPost) 
       .Columns(_blogCardColumns) 
       .Source(src => src.LeftJoin(new QuerySourceTable($"({activityQuery})", "A"), "V.DocumentGUID", "A.ActivityValue")) 
       .OrderByDescending(ColumnNames.BlogPostDate) 
       .Published(selectOnlyPublished) 
       .NestingLevel(1) 
       .Path(path); 

此查詢的工作很好,但它遠返回我一套樹節點,併爲我可以看到,它不會返回我的PageViews列。

有沒有辦法做一個查詢和結果集包括頁面瀏覽列(或有辦法從treenode元素)?

我曾嘗試的結果如下,但它只是返回null:

var nodes = query.ToList() 
nodes.First().GetValue("PageViews"); 

但這返回null,即使如果我得到查詢SQL和SQL Management Studio中運行它,它返回28爲PageViews

+1

訪問網頁瀏覽量我會檢查'PageViews'列名在變量'_blogCardsColumns'中。否則,如果使用自定義查詢,你有嗎? – mnield

回答

3

好吧,事實證明.ToList()返回一個treenode集合。如果我改變最後一行

var dataset = query.Result; 

它返回所有我_blogCardsColumns要求的列的數據集,然後我可以用

foreach (DataRow row in dataSet.Tables[0].Rows) 
{ 
    int pageviews = int.Parse(dataRow["PageViews"].ToString()) 
}