C# 将此SQL语句转换为LINQ
我对linq非常陌生,在linq中高效地编写此查询时遇到了一些困难C# 将此SQL语句转换为LINQ,c#,sql,linq,linq-to-sql,C#,Sql,Linq,Linq To Sql,我对linq非常陌生,在linq中高效地编写此查询时遇到了一些困难 SELECT ID, UniqueID, RouteHeaderID, RouteObjectState, OriginalRouteUniqueID FROM dbo.MeterReadingOrderERPRouteCreateResponses WHERE (ID NOT IN (SELECT MeterReadingOrderERPRouteCreateResponseID FROM
SELECT ID, UniqueID, RouteHeaderID, RouteObjectState, OriginalRouteUniqueID
FROM dbo.MeterReadingOrderERPRouteCreateResponses
WHERE (ID NOT IN (SELECT MeterReadingOrderERPRouteCreateResponseID
FROM dbo.Tasks
WHERE (TaskType = 'MeterReading')))
需要帮忙吗?我已从尝试此解决方案,但出现以下错误:无法创建“TaskManager.Models.Task”类型的常量值。在此上下文中只支持基本类型“如Int32、String和Guid”。我只是在脑子里想了想,但可能是这样吗
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};
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 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
};
嗨,巴拉R.试过了,效果很好。感谢您的快速回答。Hi Bala R.试过了,效果非常好。谢谢你的快速回答