问题陈述:
我正在尝试将我的 Sql 之一转换为 linq 查询,但我无法获得所需的输出。谁能建议我应该做什么?
SQL查询:
SELECT AssetTagging.AssetID, AssetTagging.AssetDescription, [Return].RequestStatus
FROM AssetTagging
LEFT OUTER JOIN [Return] ON AssetTagging.AssetID = [Return].AssetID
LEFT OUTER JOIN Issue ON AssetTagging.AssetID = Issue.AssetID
WHERE (Issue.AssetID IS NULL) OR ([Return].RequestStatus = 'Approved')
我正在使用的 Linq 查询:
var result = (from at in db.AssetTagging.AsEnumerable()
join r in db.Return on at.AssetID equals r.AssetID
orderby at.AssetID
where !db.Issue.Any(issue=>issue.AssetID==at.AssetID) || r.RequestStatus=="Approved"
select new globalTestModel
{
model1=at
}).ToList();
//I know that in Linq query I'm using Inner join instead of Left Join,but i'm getting error if i use left join instead of inner join?
我究竟做错了什么??
有什么建议可以在 Linq 中获得像 Sql 这样的所需查询吗?
资产标签表:
问题表:
返回表:
期望的输出:
你需要删除.AsEnumerable()
,因为您希望将查询翻译为sql
。现在它会使用linq-to-objects
如果您使用的是左连接linq-to-object
您需要检查空引用异常。rt
可能为空,所以rt.RequestStatus
会抛出异常。
*我相信rt
应该r
在你的例子中
您无法投影到现有实体,因此您需要将选择更改为:
select new PocoClass
{
model1=at
}
//New class definition
public PocoClass
{
public AssetTagging model1 { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)