Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 奇怪的Linq到Sql错误-检索太多字段_.net_Linq To Sql - Fatal编程技术网

.net 奇怪的Linq到Sql错误-检索太多字段

.net 奇怪的Linq到Sql错误-检索太多字段,.net,linq-to-sql,.net,Linq To Sql,我有一个非常简单的LINQtoSQL语句(表面上)运行良好。当我检查它生成的sql代码时,它试图检索所有表字段,而不是我刚才请求的字段。这是正常的做法吗 以下是linq to sql查询的一些psedo代码:- var result = (from q in db.Foos where blah blah blah orderby more blah select new ResultThingy

我有一个非常简单的LINQtoSQL语句(表面上)运行良好。当我检查它生成的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();
现在,它正在从表栏中检索所有值。。。(以及其他一些领域)

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

嗯。。。思想?我真的对此感到困惑。

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

由于您使用的是.NET类型(不是实体),Linq2SQL必须提取所有内容,直到最后一次选择为止

为了避免这种情况,请改用匿名对象


IOW:
选择新的{q.A,q.B,C=q.Bar.A,D=q.Bar.B}

真的吗?嗯,太棒了,我来试试。我可以确认我的ResultThingy只是一个POCO类,而不是Linq2SQL实体表/类。我将看到当我使用匿名对象时会发生什么,并在这里报告。它将起作用:)您的select被视为可枚举而不是可查询(但它是可查询的,取决于select)。不-仍然尝试提取所有内容:(代码更改为…select new{…}就像上面你做的一样。所以我剥离了“选择后退”中的所有项目,直到我找到了导致问题的项目。出于兴趣,我还尝试将其剥离回去,而不是使用匿名对象(如建议的那样),我使用了我的POCO。实际上,这很有效(直到我包含了导致该实体的所有数据都被返回的'bad'属性)。嗯,奇怪:)无论如何,我会给你分数:)