LINQ 的 NOT IN 使用语法

Syntax of NOT IN usage of LINQ

我有 EntityFramework 的 DataContext 提供给我的 System.Data.Entity.Dbset。 我的 ViewModel 中有一个 ObservableCollection AllTaxes 我只是想从 System.Data.Entity.Dbset 中删除所有那些已从 AllTaxes 中删除的条目,基于使用 Linq 称为 "TaxCode" 的常见 属性。

我不太擅长 Linq.I 使用以下 Linq 找出所有从 ViewModel 中删除但仍然存在于模型中的税码。

var List = Hexa_entity.hexa_tax.Where(Left => !AllTaxes.Any(Right => Right.TaxCode == Left.TaxCode));

但是,这给了我例外:-

Unable to create a constant value of type Hexa.Models.DM_Tax. Only primitive types or enumeration types are supported in this context.

简单地说,我如何将中间的 SQL 查询转换为 linq?

List<ClassTest> Lst = 
    select * from List1<ClassTest>() 
    where id not in (select id from List2<ClassTest>())
    .ToList<ClassTest>();

要解决该问题,请尝试以下操作:

var AllTaxesCodes=AllTaxes.Select(e=>e.TaxCode);//Use a collection of primitive type
var List = Hexa_entity.hexa_tax.Where(Left => !AllTaxesCodes.Contains( Left.TaxCode));