使用kentico get文件返回已加入的列

时间:2017-08-01 15:13:02

标签: 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);

此查询效果很好,但它会返回一组treenodes,据我所知,它并没有返回PageViews列。

有没有办法进行查询,结果集包含页面视图列(或者有没有办法从treenode元素中获取它)?

我已经尝试了以下结果,但它只返回null:

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

但是这会返回null,即使我获得了查询sql并在sql management studio中运行它,它为PageViews返回28

1 个答案:

答案 0 :(得分:3)

好的,事实证明.ToList()会返回一个treenode集合。如果我将最后一行更改为

var dataset = query.Result;

它会返回一个数据集,其中包含我在_blogCardsColumns中请求的所有列,然后我可以使用

访问我的综合浏览量
foreach (DataRow row in dataSet.Tables[0].Rows)
{
    int pageviews = int.Parse(dataRow["PageViews"].ToString())
}