将此 SQL 语句转换为 LINQ
本文关键字:LINQ 转换 语句 SQL 将此 | 更新日期: 2023-09-27 17:56:51
我是 LINQ
的新手,在 LINQ 中有效地编写此查询时遇到了一些困难。
SELECT ID, UniqueID, RouteHeaderID, RouteObjectState, OriginalRouteUniqueID
FROM dbo.MeterReadingOrderERPRouteCreateResponses
WHERE (ID NOT IN (SELECT MeterReadingOrderERPRouteCreateResponseID
FROM dbo.Tasks
WHERE (TaskType = 'MeterReading')))
请帮忙吗?我从以下位置尝试了此解决方案:您将如何使用 LINQ 执行"不在"查询? 但收到以下错误:无法创建类型为"任务管理器.模型.任务"的常量值。在此上下文中仅支持基元类型("Int32、字符串和 Guid")。
只是在我的头顶上做这件事,但也许这个?
var subQuery = from t in Tasks
where t.TaskType == "MeterReading"
select t.MeterReadingOrderERPRouteCreateResponseID
var query = from m in MeterReadingOrderERPRouteCreateResponses
where !subQuery.Contains(m.ID)
select new
{
ID = m.ID,
UniqueID = m.UniqueID,
RouteHeaderID = m.RouteHeaderID,
RouteObjectState = m.RouteObjectState,
OriginalRouteUniqueID = m.OriginalRouteUniqueID
};
var meterReadingTasks = from task in context.Tasks
where task.TaskType == "MeterReading"
select task.MeterReadingOrderERPRouteCreateResponseID;
var results = from m in context.MeterReadingOrderERPRouteCreateResponses
where !meterReadingTasks.Contains(m.Id)
select new { m.ID, m.UniqueID, m.RouteHeaderID, m.RouteObjectState, m.OriginalRouteUniqueID};