0

MockDataStore返すがありましたList<Task>。次に、Aggregateextensionメソッドを使用してそのリストをクエリします。だから私はLINQ-to-Objectsクエリを実行していました。モックデータストアをクラスを継承するDbContextクラスに置き換えたので、式ツリーに変換できないために本体を持つラムダ式を使用できないため、同じクエリは機能しなくなりました。それで、それを回避し、SQLで集計を実行し、メモリ内で実行する必要を回避する方法はありますか?以下は私のコードです:

        //List<Task> tasks = MockDataStore.GetData()
        //    .Aggregate(new List<Task>(), (accumulator, treaty) => { accumulator.AddRange(treaty.Tasks); return accumulator; })
        //    .Where(x => x.AssignedTo.Equals(companyId) && x.StatusId == statusId).ToList();

        using (SCGREDbContext context = new SCGREDbContext())
        {
            List<Task> tasks = context.Treaties.Aggregate(new List<Task>(), (accumulator, treaty) => { accumulator.AddRange(treaty.Tasks); return accumulator; })
                                .Where(x => x.AssignedTo.Equals(companyId) && x.StatusId == statusId).ToList();
            return tasks;
        }
4

1 に答える 1

2

なぜ正確に使用しているのAggregate()ですか?私はあなたのAggregate()呼び出しがこの呼び出しと同等だと思いますSelectMany()

context.Treaties.SelectMany(treaty => treaty.Tasks)
于 2012-10-12T17:22:52.003 に答える