LINQ的NOT IN使用语法

时间:2017-05-08 18:23:17

标签: entity-framework linq linq-to-entities

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

我对Linq不太满意。我使用以下Linq来查找从ViewModel中删除但仍然存在于Model中的所有TaxCodes。

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

但是,这给了我一个例外: -

  

无法创建Hexa.Models.DM_Tax类型的常量值。只要   在此上下文中支持原始类型或枚举类型。

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

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

1 个答案:

答案 0 :(得分:3)

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

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));