2010-08-07 3 views
1

Вот запрос я пытаюсь запустить из моего источника OData:Как сделать вложенное число с OData и LINQ?

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(), но если я включаю его я получаю следующее ошибка:

Constructing or initializing instances of the type <>f__AnonymousType1`3[System.Int32,System.String,System.Int32] with the expression j.JobRuns.Count() is not supported.

Похоже, что проблема заключается в попытке получить вложенный счет через OData. Для чего это работает? Я пытался избежать получения всей вложенной коллекции для каждого объекта, чтобы получить счет.

Спасибо!

ответ

1

На сегодняшний день протокол OData не поддерживает агрегаты.

Прогнозы да, но прогнозы, которые включают в себя совокупные свойства нет.

Alex

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(); 
} 
0

Теперь вы можете использовать мой продукт AdaptiveLINQ и метод расширения QueryByCube.

 Смежные вопросы

  • Нет связанных вопросов^_^