【发布时间】:2015-02-06 14:27:27
【问题描述】:
问题陈述:
我正在尝试将我的一个 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?
资产标签表:
问题表:
返回表:
期望的输出:
【问题讨论】:
-
LINQ to SQL Left Outer Join 的可能重复项
-
@vittore:但是你分享的链接我之前提到的将我的内连接转换为左外连接但它给出了错误,比如对象引用未设置为对象的实例。我已经改变了它作为
join r in db.Return on at.AssetID equals r.AssetID into t from rt in t.DefaultIfEmpty()和在哪里条件rt.RequestStatus=="Approved"。我认为哪里条件给出错误 -
我看不到您引用评论的链接的位置。链接主题中的示例告诉您使用
join r in db.Return on at.AssetID equals r.AssetID into joinedReturns。 -
您能否更具体地说明问题所在?您收到什么错误或数据与您预期的不符?问题可能只是您的
orderby在您的where之前,因此更多上下文将非常有用。
标签: sql asp.net-mvc linq