Sql server 如何在实体框架中将SQLServer查询转换为linq
我正在将Sql server 如何在实体框架中将SQLServer查询转换为linq,sql-server,asp.net-mvc-3,linq,Sql Server,Asp.net Mvc 3,Linq,我正在将sql server查询转换为linq SELECT * FROM DataFlow where FlowDeleted = 0 and DataFlow.FlowVersionNumber = ( SELECT MAX(FlowVersionNumber) from DataFlow i where FlowDeleted = 0 AND i.FlowCounter = DataFlow.FlowCounter group by F
sql server
查询转换为linq
SELECT * FROM DataFlow where FlowDeleted = 0 and
DataFlow.FlowVersionNumber =
(
SELECT MAX(FlowVersionNumber) from DataFlow i
where FlowDeleted = 0 AND
i.FlowCounter = DataFlow.FlowCounter
group by FlowCounter
)
ORDER by 1
我的Linq查询代码是:
public List<DataFlow> getdataflow()
var dflow = db.DataFlows.Where (
d => d.FlowDeleted == false &&
d.FlowVersionNumber =
(
db.DataFlows.Where(i => i.FlowDeleted == false && i.FlowCounter == d.FlowCounter).GroupBy(g => g.FlowCounter)
.Select(s => s.Max(m => m.FlowVersionNumber))
)
)
.Select(s =>
new DataFlow
{
FlowCounter = s.FlowCounter,
FlowDescription = s.FlowDescription,
FlowName = s.FlowName,
}).OrderBy(o => o.FlowCounter);
return dflow.ToList();
}
public List getdataflow()
var dflow=db.DataFlows.Where(
d=>d.FlowDeleted==false&&
d、 FlowVersionNumber=
(
其中(i=>i.FlowDeleted==false&&i.FlowCounter==d.FlowCounter).GroupBy(g=>g.FlowCounter)
.选择(s=>s.Max(m=>m.FlowVersionNumber))
)
)
。选择(s=>
新数据流
{
流量计数器=s.流量计数器,
FlowDescription=s.FlowDescription,
FlowName=s.FlowName,
}).OrderBy(o=>o.FlowCounter);
返回dflow.ToList();
}
但它给出的错误如下:运算符“&&”不能应用于“bool”类型的操作数字符串'
请帮助我您正在使用赋值运算符而不是比较…请尝试
.d.FlowVersionNumber==…
db.DataFlows.Where(d =>
d.FlowDeleted == false &&
d.FlowVersionNumber == db.DataFlows.Where(i =>
i.FlowDeleted == false &&
i.FlowCounter == d.FlowCounter).GroupBy(g => g.FlowCounter)
.First(s => s.Max(m => m.FlowVersionNumber))
)
)
我将Select
更改为First
,因为您需要比较标量。但是,请确保您将找到一个项目,否则可能会出现异常