这是我使用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中执行等效操作时可行)。
答案 0 :(得分:0)
<强>您好,强>
请你试试下面......?
var query = from SubCat in mySubCategory where SubCat.CategoryID == 1 group 1 by SubCat.CategoryID into grouped select new { Catg = grouped.Key, Count = grouped.Count() };
谢谢, Vishal Patel