当我查看EF生成的SQL查询时,我看到了
SELECT [extent1].ID as ID,
[extent1].Name as Name
From(
Select myview.ID as ID,
myview.Name as Name
From myview) AS [extent1]
Where([Extent1].ID = @p_linq_0)
为什么外部选择发生在内部选择?我有一个非常大的表,我可以通过外部查询轻松获取记录,但整个查询结合时间超时。
我的Linq查询
var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;
我正在使用SQL 2012& EF5& LINQ。
有没有办法“强制”更简单的查询?
答案 0 :(得分:5)
因为你在最后再次使用LINQ方法调用“SELECT”。
var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;
最后一行选择i,没用,但是EF并不知道它是否有用,你可以简单地避免它。
var result = invitationEntity.Invitations
.Where(a=>a.id == inviationId);
您仍然可以枚举结果并获取所有内容。
好对不起,我忘了添加,你不必使用“from”,你可以简单地使用.Where(表达式)
如果您想使用LINQ关键字,那么您可以这样使用它,
var result = from i in invitationEntity.Invitations
where i.id == invitationId
select i;
您不能混用LINQ关键字和LINQ扩展方法。
答案 1 :(得分:0)
我会说那个
var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;
此
a=>a.id == inviationId
来自a=>
生成
Select myview.ID as ID,
myview.Name as Name
From myview
所以a
是[extent1]
你应该使用"标准" where子句
from i in invitationEntity.Invitations
where i.id == inviationId
select i;