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

私の製品であるAdaptiveLINQと拡張メソッドを使用できるようになりましたQueryByCube

于 2014-09-01T19:24:39.300 に答える
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 に答える