奇怪的Linq to Sql错误 - 检索太多字段

时间:2009-10-27 03:34:06

标签: .net linq-to-sql

我有一个非常简单的Linq to Sql语句(在他的表面上)工作正常。当我检查它生成的sql代码时,它正在尝试检索表字段的所有而不是我刚才请求的字段。这是正常做法吗?

这是linq to sql查询的一些psedo代码: -

var result = (from q in db.Foos
              where blah blah blah
              orderby more blah
              select new ResultThingy
              {
                  A = q.A, // int
                  B = q.B, // string
                  C = q.Bar.A // int
                  D = q.Bar.B // string
              })
              .Take(5)
              .ToList();

现在,它正在从表Bar ...(以及其他一些字段)中检索所有值。

这是正常做法吗?注意ResultThingy类中的每个属性是一个简单类型?

嗯...想法?我真的很困惑。

1 个答案:

答案 0 :(得分:0)

这是正常的(仔细查看您的代码后)。

当您使用.NET类型(不是实体)时,Linq2SQL必须提取所有内容直到最后一个选择。

解决这个问题,改为使用匿名对象。

IOW:select new { q.A, q.B, C = q.Bar.A, D = q.Bar.B }