1

これは、Linq to Entity Framework を使用して LinqPad でテストしているクエリの要点です。

私の考えでは、結果の SQL は SELECT TableA.ID AS myID のようなもので始まるはずです。代わりに、SELECT にはすべてのテーブルのすべてのフィールドが含まれます。言うまでもなく、これは他の問題の中でもパフォーマンスに大きな打撃を与えます。どうすればこれを防ぐことができますか?

var AnswerList = this.Answers
                .Where(x=>
                    ..... various conditions on x and related entities...
                )
                .GroupBy(x => new {x.TableA,x.TableB,x.TableC})
                .Select(g=>new  {
                        myID = g.Key.TableA.ID,
                })


AnswerList.Dump();

実際には、匿名型の代わりに新しい型を使用していますが、どちらの方法でも結果は同じです。

... をさらに記入する必要がある場合はお知らせください。

アップデート

GroupBy メソッドで返されるフィールドを明示的に指定することで、この問題を回避できることに気付きました。new {x.TableA.ID ... }

しかし、Select メソッドを使用しただけでは機能しない理由はまだわかりません (これは、Linq to SQL で同等の操作を行うときに機能します)。

4

1 に答える 1