Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将此SQL语句转换为LINQ_C#_Sql_Linq_Linq To Sql - Fatal编程技术网

C# 将此SQL语句转换为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

我对linq非常陌生,在linq中高效地编写此查询时遇到了一些困难

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.试过了,效果非常好。谢谢你的快速回答