LINQ到EF返回所有字段而不仅仅是Select()中的字段

时间:2013-08-30 15:32:02

标签: c# .net linq entity-framework linq-to-entities

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

1 个答案:

答案 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