我有一个非常简单的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类中的每个属性是一个简单类型?
嗯...想法?我真的很困惑。答案 0 :(得分:0)
这是正常的(仔细查看您的代码后)。
当您使用.NET类型(不是实体)时,Linq2SQL必须提取所有内容直到最后一个选择。
解决这个问题,改为使用匿名对象。
IOW:select new { q.A, q.B, C = q.Bar.A, D = q.Bar.B }