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

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() };

谢谢你,维沙尔·帕特尔

于 2013-10-22T14:23:52.917 回答