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