linq到不在语句中的实体

linq到不在语句中的实体,linq,entity-framework,Linq,Entity Framework,我是新来的linq实体。我试图做一个不在声明,当我运行它时,我没有得到任何回报。但是,如果我运行SQL等价物,我将返回数据 我试图复制的SQL语句是 SELECT * FROM [SCRAPREASON] WHERE [CODE] NOT IN (SELECT [CODE] FROM [QUALITYALERTRULE]) ORDER BY [CODE] 我现在的关键是 var DefectCode = PumaOEEEntities.ScrapReasons .Where(x

我是新来的linq实体。我试图做一个不在声明,当我运行它时,我没有得到任何回报。但是,如果我运行SQL等价物,我将返回数据

我试图复制的SQL语句是

SELECT * FROM [SCRAPREASON] WHERE [CODE] NOT IN (SELECT [CODE] FROM [QUALITYALERTRULE]) ORDER BY [CODE]
我现在的关键是

  var DefectCode = PumaOEEEntities.ScrapReasons
     .Where(x => !PumaOEEEntities.QualityAlertRules.Any(y => y.Code != x.Code))
     .Select(x => new { GroupID = x.Code}).ToList();

有人知道我做错了什么吗?

你应该比较代码是否相等(
=
而不是
!=
):

生成的SQL将如下所示:

SELECT
    [Extent1].[Code] AS [Code],
    // Other columns
    FROM [dbo].[ScrapReasons] AS [Extent1]
    WHERE  NOT EXISTS (SELECT
        1 AS [C1]
        FROM [dbo].[QualityAlertRules] AS [Extent2]
        WHERE [Extent2].[Code] = [Extent1].[Code]
    )
    ORDER BY [Extent1].[Code] ASC

你可以试试
,除了这样的

var DefectCode = PumaOEEEntities.ScrapReasons.Select(x=>x.Code)
                .Except(PumaOEEEntities.QualityAlertRules.Select(y=>y.Code)).ToList();

添加order by,它看起来很完美。这将只返回
code
列我想OP也在尝试获取
code
的列表。我遗漏了什么吗?您遗漏了OP正在尝试复制sql查询,该查询具有
SELECT*FROM
var DefectCode = PumaOEEEntities.ScrapReasons.Select(x=>x.Code)
                .Except(PumaOEEEntities.QualityAlertRules.Select(y=>y.Code)).ToList();