2

这是我试图从我的 OData 源运行的查询:

var query = from j in _auditService.AuditJobs.IncludeTotalCount()
   orderby j.Description
   select new 
      {
         JobId = j.ID,
         Description = j.Description,
         SubscriberCount = j.JobRuns.Count()
      };

如果我不使用 j.JobRuns.Count(),它运行得很好,但如果我包含它,我会收到以下错误:

不支持使用表达式 j.JobRuns.Count() 构造或初始化 <>f__AnonymousType1`3[System.Int32,System.String,System.Int32] 类型的实例。

尝试通过 OData 获取嵌套计数似乎是一个问题。有什么办法解决这个问题?我试图避免获取每个对象的整个嵌套集合只是为了计数。

谢谢!

4

3 回答 3

2

截至今天,OData 协议不支持聚合。

预测是的,但包括聚合属性的预测没有。

亚历克斯

于 2010-08-11T03:31:45.353 回答
0

您需要 .Net 4.0 并且在 LinqPad 中您可以通过 netflix OData 服务运行以下操作

void Main()
{
    ShowPeopleWithAwards();
    ShowTitles();
}

// Define other methods and classes here
public void ShowPeopleWithAwards()
{
    var people = from p in People.Expand("Awards").AsEnumerable()
            where p.Awards.Count > 0
            orderby p.Name
            select new
            {
              p.Id,
                    p.Name,
              AwardCount = p.Awards.Count,
             TotalAwards = p.Awards.OrderBy (a => a.Type).Select (b => new { b.Type, b.Year} )
                 };

    people.Dump();
}

public void ShowTitles()
{
    var titles = from t in Titles.Expand("Awards").AsEnumerable()
            where t.ShortName != string.Empty && 
                  t.ShortSynopsis != string.Empty &&
             t.Awards.Count > 0
            select t;
    titles.Dump();
}
于 2010-08-12T02:22:25.387 回答
0

您现在可以使用我的产品AdaptiveLINQ和扩展方法QueryByCube

于 2014-09-01T19:24:39.300 回答