这是我使用 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 中执行等效操作时它确实起作用)。