以下是我尝试从我的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(),它运行得很好,但如果我包含它,我会收到以下错误:
构造或初始化实例 这种类型 <> f__AnonymousType1`3 [System.Int32,System.String,System.Int32] 用表达式j.JobRuns.Count() 不受支持。
尝试通过OData获取嵌套计数似乎是一个问题。这是一个什么样的解决方案?我试图避免为每个对象获取整个嵌套集合以获得计数。
谢谢!
答案 0 :(得分:1)
截至今天,OData协议不支持聚合。
预测是,但预测包括聚合属性编号
亚历
答案 1 :(得分:0)
您需要.Net 4.0和In 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();
}
答案 2 :(得分:0)
您现在可以使用我的产品AdaptiveLINQ和扩展方法QueryByCube
。