无法将 SQL 查询转换为左外连接的 LINQ 查询

2024-03-12

问题陈述:

我正在尝试将我的 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(使用前将#替换为@)

无法将 SQL 查询转换为左外连接的 LINQ 查询 的相关文章

随机推荐