2017-08-01 4 views
0

が、私はこのクエリはうまく動作しますが、それは私の知る限りとして、私のTreeNodeのセットを返し、戻るkenticoで列に加わった文書

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"); 

が、これは、私は、クエリのSQLを取得し、SQL管理スタジオでそれを実行した場合、それは28を返していても、nullを返しますページビューの場合

+1

を使用して、私のページビューにアクセスすることができます列名は変数 '_blogCardsColumns'にあります。それでも問題が解決しない場合は、カスタムクエリを使用していますか? – mnield

答えて

3

Okだとわかるように.ToList()は、ツリーノートコレクションを返します。私は

var dataset = query.Result; 

への最後の行を変更した場合はそれは私が_blogCardsColumnsに要求されたすべての列を持つデータセットを返し、その後、私は `PageViews`ていることを確認したい

foreach (DataRow row in dataSet.Tables[0].Rows) 
{ 
    int pageviews = int.Parse(dataRow["PageViews"].ToString()) 
} 
関連する問題